在使用Extjs制作crud时,由于添加和修改界面的高度相似,使用了相同的row字段。

在角色字段中使用了change监听事件,用于动态的无效化权限分配字段,因为权限分配界面默认没有隐藏,设定了checked:true属性

var row_role = {layout:'column',items:[{columnWidth:.9,layout:'form',items:[{
xtype:'radiogroup', fieldLabel:'角色',
items:[
{id:'role1', boxLabel:'管理员', name:'userDto.user.roleCode', inputValue:1},
{id:'role2', boxLabel:'操作员', name:'userDto.user.roleCode', inputValue:2,    checked: true},
{id:'role3', boxLabel:'计划发布员', name:'userDto.user.roleCode', inputValue:3},
{id:'role4', boxLabel:'客户',  name:'userDto.user.roleCode', inputValue:4}
],
listeners:{
'change':function(group,checked){
var fun = Ext.getCmp('fun_role');
if(checked.inputValue == 2){
fun.enable();
}else{
fun.disable();
}
}
}
}]}]}; var row_funCode = {layout:'column',items:[{columnWidth:.9,layout:'form',items:[{
xtype:'checkboxgroup', fieldLabel:'权限分配',
columns:4, id:'fun_role',
items:[
{boxLabel:'免签', id:'userDto.user.funCode1'},
{boxLabel:'订房', id:'userDto.user.funCode2'},
{boxLabel:'订车', id:'userDto.user.funCode3'},
{boxLabel:'订餐', id:'userDto.user.funCode4'},
{boxLabel:'订导游', id:'userDto.user.funCode5'},
{boxLabel:'订门票', id:'userDto.user.funCode6'},
{boxLabel:'订火车票', id:'userDto.user.funCode7'},
{boxLabel:'额外费用', id:'userDto.user.funCode8'}
]
}]}]};

经过测试,证明在添加界面中没有任何问题,角色的切换和事件的处理都很正常。

但在处理修改数据时出现了问题。初步的看,业务逻辑完全没有问题,但在业务展示是,应该无效化的字段依旧可以使用。

function inputUserData(selected,form){
//声明一个新的数据,将从数据源中获取的数据放入其中
var newRecord = {
data:{
//textfiled,下拉菜单的赋值方式
'userDto.user.username' :selected[0].get('username'),
'userDto.user.nickname' :selected[0].get('nickname'),
'userDto.user.qq' :selected[0].get('qq'),
'userDto.user.company.itemCode' :selected[0].get('companyCode'),
'userDto.user.remark' :selected[0].get('remark'),
}
}
//根据获取到的角色值和默认值比较
switch(selected[0].get('roleCode')){
//给相应的单选按钮设置选中状态
case 1: var role = Ext.getCmp('role1'); role.setValue(true);
//获取权限分配对象,设置无效化
var fun = Ext.getCmp('fun_role');
fun.disable();
break;
case 2: var role = Ext.getCmp('role2'); role.setValue(true);
var fun = Ext.getCmp('fun_role');
fun.enable();
break;
case 3: var role = Ext.getCmp('role3'); role.setValue(true);
var fun = Ext.getCmp('fun_role');
fun.disable();
break;
case 4: var role = Ext.getCmp('role4'); role.setValue(true);
var fun = Ext.getCmp('fun_role');
fun.disable();
break;
}
//将新的数据刷新到form表单中
form.getForm().loadRecord(newRecord);
}

经过反复测试后,发现是角色中设置的checked属性造成的,当该字段被隐藏后,执行了change事件

var fun = Ext.getCmp('fun_role'); fun.disable();

change事件监听的checked是手动设置的{id:'role2', boxLabel:'操作员', name:'userDto.user.roleCode', inputValue:2, checked: true}的这条记录

if(checked.inputValue == 2)

所有被无效化的字段,有重新因为change事件而被有效化。修改该问题时:建议将手动设置的checked属性删除即可



浅谈Extjs radiogroup change事件与items下的checked属性的更多相关文章

  1. 浅谈Android中的事件分发机制

    View事件分发机制的本质就是就是MotionEvent事件的分发过程,即MotionEvent产生后是怎样在View之间传递及处理的. 首先介绍一下什么是MotionEvent.所谓MotionEv ...

  2. 浅谈Javascript单线程和事件循环

    单线程 Javascript 是单线程的,意味着不会有其他线程来竞争.为什么是单线程呢? 假设 Javascript 是多线程的,有两个线程,分别对同一个元素进行操作: function change ...

  3. 浅谈JavaScript中的事件

    引言 Html页面与JavaScript之间的交互是通过事件来完成的.事件,就是文档或者浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(处理程序)来预订事件,以便事件发生时执行相应的代码.这在传 ...

  4. 浅谈C#委托和事件

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...

  5. 浅谈javascript的Touch事件

    js的touch事件,一般用于移动端的触屏滑动 代码如下: $(function(){ document.addEventListener("touchmove", _touch, ...

  6. 浅谈C#委托和事件【转】

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...

  7. 浅谈C#委托和事件(转载)

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...

  8. 【解决方案】jquery live的change事件在IE下失效

    $("#spanChildSec select").live("change", function () {              //处理内容       ...

  9. 浅谈Linux(Centos7.4)环境下NTP服务器的构建

     一.软件环境 1.操作系统版本 [root@Geeklp201 etc]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core ...

随机推荐

  1. Latex引用插图格式制定问题(1)

    自定义新命令\reffig如下:\newcommand{\reffig}[1]{Figure \ref{#1}}在需要引用图片的时候,用\reffig代替\ref,就可以自动在图号前面输出" ...

  2. codeforces 744C Hongcow Buys a Deck of Cards

    C. Hongcow Buys a Deck of Cards time limit per test 2 seconds memory limit per test 256 megabytes in ...

  3. VR外包 虚拟现实外包 北京软件公司

    我们制作各类型VR全景虚拟现实,增强现实视频制作.录制等项目.品质保证,售后完备,可签合同.contectus: 13911652504(技术经理tommy) 承揽VR外包 虚拟现实外包 U3D外包( ...

  4. About 滚存

    滚存这个神奇的东西就比如DP现在这个状态是上一个状态转移过来的,但也只与上一个状态有关,所以就可以把原本的f[10000,10000]开成f[2,10000],就不会炸内存了.

  5. RecyclerView 滑动检测 (上滑 up)(下滑 down)(顶部 top)(底部 bottom)

      RecyclerView 给我们的可以检测滑动事件的接口 只有 一个方法 recyclerview.setOnScrollListener()或者 recyclerview.addOnScroll ...

  6. ThinkPHP的URL重写+路由+伪静态,实现SEO效果。

    1.URL重写,隐藏网址中的Index.php. ThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好.但 ThinkPHP提供了各种机制来定制需要的 URL 格式 ...

  7. offsetwidth/clientwidth的区别

    clientWidth是对象看到的宽度(不含边线,即border)scrollWidth是对象实际内容的宽度(若无padding,那就是边框之间距离,如有padding,就是左padding和右pad ...

  8. mongo 相关命令

    mongo导入数据: 1. 先进入找到mongo 安装目录 执行 ./mongo 进入mongo 2. mongorestore -u 用户名 -p 密码 -d 数据库 —drop 文件存在路径 显示 ...

  9. 【安全测试】WebGoat安装

    参考资料:http://wenku.baidu.com/link?url=Qg8GOqw6-CK92-3Dgrm608TlJjDtKMLU9ZlC73Js9LD2FZFgqdHEfJ2sTIRCae_ ...

  10. 深度学习(DNN)的学习网站

    近期决定对深度学习稍微学习一下,因此搜集了一些相关的网站和资料,特分享给大家. 首先,如果你对机器学习还不甚了解,最好先了解一下其相关的概念,推荐 Andrew Ng在斯坦福的机器学习教程 (中文翻译 ...