Ext.form.FormPanel的bug?

2024-04-10 06:38
文章标签 bug form ext formpanel

本文主要是介绍Ext.form.FormPanel的bug?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ext真的强大,所以选择来做后台,在做一个权限时发现了一个问题,也不知道是不是BUG,如果有遇到同样的问题,请指教,3Q

在说明问题之前,先说下我怎么写的Ext,我做采用JS调用,所有JS都是动态加载,就是菜单点击时才加载一个JS(通过网上的Ext.ux.JSLoader,小有改动);

动态加载的好处自认为可以解决在不影响第一次打开加载过多JS而造成的问题,在加载JS到TabPanel后,如果再点同样菜单是不会再加载JS的,脚本做了判断(这个很重要,后面的问题可以排除是多次加载造成的);

下面是问题: Ext.form.FormPanel在加载后出现反复加载items中的控件,而且加载不全,有的没了有的又多了;第一次加载有FormPanel的js,都是正常的,如果再加载一次就会出问题如图那样的反复加载items中的内容;

感觉数据库来的数据不会有问题,道是加到formpanel的静态控件checkbox有问题

Js代码 复制代码  收藏代码
  1. permission = function(node) {   
  2.     var checkall = new Ext.form.Checkbox({ id: 'checkall', name: 'checkall', fieldLabel: '功能名称', boxLabel: '全选', inputValue: true,   
  3.         handler: function() {   
  4.             if (this.checked) {   
  5.                 Ext.select('input[name^=cbopitem]').each(function() { this.checked = true; });   
  6.             } else {   
  7.                 Ext.select('input[name^=cbopitem]').each(function() { this.checked = false; });   
  8.             }   
  9.         }   
  10.     });   
  11.     var form = new Ext.form.FormPanel({   
  12.         id: 'roleopform',   
  13.         title: '当前位置:角色管理 > ' + node.text,   
  14.         border: false,   
  15.         plain: true,   
  16.         layout: "form",   
  17.         buttonAlign: 'center',   
  18.         bodyStyle: 'padding:0 10px 0;',   
  19.         items: [checkall],   
  20.         buttons: [{   
  21.             text: '保存',   
  22.             handler: function() {   
  23.                 if (form.getForm().isValid()) {   
  24.                     Ext.MessageBox.show({ title: '提示框', msg: '你确定要修改吗?', buttons: Ext.MessageBox.OKCANCEL, icon: Ext.MessageBox.WARNING,   
  25.                         fn: function(btn) {   
  26.                             if (btn == 'ok') {   
  27.                                 form.getForm().submit({   
  28.                                     waitMsg: "数据保存中...",   
  29.                                     title: "请稍侯",   
  30.                                     url: '/sys/permissionsave',   
  31.                                     params: { id: node.attributes.id },   
  32.                                     success: function(form, response) {   
  33.                                         var temp = Ext.util.JSON.decode(response.response.responseText);   
  34.                                         Ext.Msg.alert("系统提示!", temp.msg);   
  35.                                     },   
  36.                                     failure: function(form, response) {   
  37.                                         Ext.MessageBox.alert("提示!""保存信息失败!");   
  38.                                     }   
  39.                                 });   
  40.                             }   
  41.                         }   
  42.                     });   
  43.                 }   
  44.             }   
  45.         }, {   
  46.             text: '取消',   
  47.             handler: function() {   
  48.                 form.getForm().reset();   
  49.             }   
  50.         }   
  51.         ]   
  52.     });   
  53.     //加载角度权限   
  54.     var conn = Ext.lib.Ajax.getConnectionObject().conn;   
  55.     conn.open("POST"'/sys/permission/' + node.attributes.id, false);   
  56.     conn.send(null);   
  57.     var perJson = Ext.util.JSON.decode(conn.responseText);   
  58.     //加载功能   
  59.     var checklist = [];   
  60.     conn.open("POST"'/sys/loadappselect'false);   
  61.     conn.send(null);   
  62.     var respText = Ext.util.JSON.decode(conn.responseText);   
  63.     Ext.each(respText, function(item) {   
  64.         var id = item.ID;   
  65.         var path = item.Path;   
  66.         var name = item.Name;   
  67.         name = GetCategoryPath(path, '|') + name;   
  68.         var checkGroup = [];   
  69.         //加载功能操作   
  70.         conn.open("POST"'/sys/operation/' + id, false);   
  71.         conn.send(null);   
  72.         var respText1 = Ext.util.JSON.decode(conn.responseText);   
  73.         Ext.each(respText1, function(item1) {   
  74.             //加载功能操作是否设置字段   
  75.             conn.open("POST"'/sys/field/' + item1.ID, false);   
  76.             conn.send(null);   
  77.             var respField = Ext.util.JSON.decode(conn.responseText);   
  78.             var opname = item1.Operation;   
  79.             if (respField.length > 0) opname += '(<a href="javascript:;">设置字段</a>)';   
  80.             var chk = { xtype: 'checkbox', boxLabel: opname, name: 'cbopitem', inputValue: item1.ID, checked: getopIscheck(perJson, item1.ID) };   
  81.             checkGroup.push(chk);   
  82.         });   
  83.         if (checkGroup.length > 0)   
  84.             checklist.push(new Ext.form.CheckboxGroup({ fieldLabel: name, columns: 1, items: checkGroup }));   
  85.     });   
  86.     form.add(checklist);   
  87.     GridMain(node, form);   
  88. };   
  89. function getopIscheck(perJson, opid) {   
  90.     var check = false; length   
  91.     for (var i = 0; i < perJson.length; i++) {   
  92.         if (perJson[i].OperationID == opid) {   
  93.             check = true;   
  94.             break;   
  95.         }   
  96.     }   
  97.     return check;   
  98. }  

 

这篇关于Ext.form.FormPanel的bug?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/890318

相关文章

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

前端form表单+ifarme方式实现大文件下载

// main.jsimport Vue from 'vue';import App from './App.vue';import { downloadTokenFile } from '@/path/to/your/function'; // 替换为您的函数路径// 将 downloadTokenFile 添加到 Vue 原型上Vue.prototype.$downloadTokenF

FORM的ENCTYPE=multipart/form-data 时request.getParameter()值为null问题的解决

此情况发生于前台表单传送至后台java servlet处理: 问题:当Form需要FileUpload上传文件同时上传表单其他控件数据时,由于设置了ENCTYPE=”multipart/form-data” 属性,后台request.getParameter()获取的值为null 上传文件的参考代码:http://www.runoob.com/jsp/jsp-file-uploading.ht

Ext重写手法

常用的几种方式:1、Ext.apply()和Ext.applyIf()2、Ext.override()3、想做某个类大的修改,可以把该类单独从源码中拿出来,直接修改,然后引用时先应用ext-all.js,再引用从源码中拿出修改的那个类4、obj.prototype.method=function(){}

Form 表单的 resetFields() 失效原因

假设我们有如下代码:  <template><ElForm ref="formRef" :model="formModel" :rules="rules"><!-- 表单内容 --></ElForm></template><script setup>import { ref } from 'vue';const formRef = ref(null);const formModel = ref

JavaBug系列-解决SpringBoot返回Xml结构的问题

JavaBug系列之SpringBoot返回Xml结构的问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 作者:Java医生 教学: Java企业项目辅导,专注于辅导新入职员工,解决各种问题! V:study_51ctofx 一、关于错误信息 如图,SpringBoot请求返回Xml格式信息 通过以上信息分析,

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

【解决bug之路】npm install node-sass(^4.14.1)连环报错解决!!!(Windows)

有关node-sass的深入分析可参考:又报gyp ERR!为什么有那么多人被node-sass 坑过? 主要有如下三方面错误,请自查: 1.node,npm版本需与node-sass版本匹配,像node-sass(^4.14.1)就得node 14.x版本才可以,node 16不行 gyp ERR! build error15 gyp ERR! stack Error: `

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,在改一个bug得时候发现一个有意思得问题,就是mybatis得xml中if判断得问题,传值名字不匹配依旧可以进行判断,如下图 传值userName,但是有意思得事情出现了,进了if,并且没有报错,尝试了两次都是这