ExtJs checkbox绑定click事件实现全选

淡淡的烟草味﹌ 2021-09-14 11:34 647阅读 0赞

需求

在ExtJs中 xtype: checkboxfieldcheckbox只封装了change事件监听,

这里写图片描述

而且Ext绑定的事件是基于订阅者模式的,当我们想实现如下的全部选择时,会发生不可避免的冲突

这里写图片描述

这时,我们只需要单纯的点击触发事件

代码

点击触发事件

  1. listeners:{
  2. afterrender:function(obj){
  3. obj.getEl().dom.onclick = function(){
  4. //事件触发事件
  5. };
  6. }
  7. }

全部选择代码

  1. {
  2. xtype: "checkbox",
  3. id:"selectPipeType",
  4. width:50,
  5. height:30,
  6. boxLabel:"全部",
  7. listeners:{
  8. afterrender:function(obj){
  9. obj.getEl().dom.onclick = function(){
  10. var selectPipeType = Ext.getCmp("selectPipeType");
  11. var pipeColumn01 = Ext.getCmp("pipeColumn01");
  12. var pipeColumn02 = Ext.getCmp("pipeColumn02");
  13. if(selectPipeType.checked){
  14. selectAllChecked = true;
  15. for(var i=0; i<pipeColumn01.items.items.length;i++){
  16. pipeColumn01.items.items[i].setValue(true);
  17. }
  18. for(var k=0; k<pipeColumn02.items.items.length;k++){
  19. pipeColumn02.items.items[k].setValue(true);
  20. }
  21. }
  22. else{
  23. selectAllChecked = false;
  24. for(var i=0; i<pipeColumn01.items.items.length;i++){
  25. pipeColumn01.items.items[i].setValue(false);
  26. }
  27. for(var k=0; k<pipeColumn02.items.items.length;k++){
  28. pipeColumn02.items.items[k].setValue(false);
  29. }
  30. }
  31. };
  32. }
  33. },
  34. handler:function(data,value){
  35. }
  36. }

子选项点击触发事件

  1. { layout:"column", id:"pipeColumn01", border:0, items:[ { xtype:"checkbox", width:50, height:20, boxLabel:"给水", id:"jsCustomService", margin:"0 0 0 95", listeners:{ afterrender:function(obj){ obj.getEl().dom.onclick = function(){ pipeItemChange(); };
  2. }
  3. }
  4. },
  5. // 管线类型子选项的change事件
  6. function pipeItemChange() {
  7. var pipeColumn01 = Ext.getCmp("pipeColumn01");
  8. var pipeColumn02 = Ext.getCmp("pipeColumn02");
  9. for(var i=0; i<pipeColumn01.items.items.length;i++){
  10. if(!pipeColumn01.items.items[i].checked){
  11. Ext.getCmp("selectPipeType").setValue(false);
  12. return;
  13. }
  14. }
  15. for(var k=0; k<pipeColumn02.items.items.length;k++){
  16. if(!pipeColumn02.items.items[k].checked){
  17. Ext.getCmp("selectPipeType").setValue(false);
  18. return;
  19. }
  20. }
  21. Ext.getCmp("selectPipeType").setValue(true);
  22. }

发表评论

表情:
评论列表 (有 0 条评论,647人围观)

还没有评论,来说两句吧...

相关阅读