2015-10-14 87 views
0

基础上回答这个问题没有选择:Select all in ExtJS 4.0 Combobox全选 - 在Ext JS的组合框

afterrender: function() { 
     me.container.on({ 
      click: function(e) { 
       console.log('on clic called'); 
       var el = e.getTarget('div', 3, true); 
       if(el.getAttribute('action') == 'select-all') { 
        me.select(me.getStore().getRange()); 
        me.setSelectedCount(me.getStore().getRange().length, flabel); 
        allSelected = true; 
       } else if (el.getAttribute('action') == 'select-none'){ 
        me.reset(); 
        allSelected = false; 
       } 
      } 
     }) 
    } 

我已经实现了我自己的组合框的“全选”和Ext JS的“选择无”。

但是,如果我多次使用它,这些操作将应用于所有实例。试着点击一个组合中的“全选/全选”,你会看到其他变化如何:http://jsfiddle.net/hernan666/vfbkgmmu/

对于原来的答案,我会得到相同的错误行为:http://jsfiddle.net/hernan666/dFEsc/414/

我希望得到任何帮助来解决这个问题,我认为使用me.container.on

回答

2

的问题。

我尝试了不同的方法,根据你的榜样,听expand,然后在摘取元素点击它似乎工作:

listeners: { 
    expand: { 
     single: true, 
     fn: function() { 
      var me = this, 
       flabel = this.getFieldLabel(); 

      me.picker.on({ 
       click: { 
        element: 'el', 
        fn: function (e) { 
         var el = e.getTarget('div', 3, true); 

         if (el.getAttribute('action') == 'select-all') { 
          me.select(me.getStore().getRange()); 
          me.setSelectedCount(me.getStore().getRange().length, flabel); 
          allSelected = true; 
         } else if (el.getAttribute('action') == 'select-none') { 
          me.reset(); 
          allSelected = false; 
         } 
        } 
       } 
      }); 
     } 
    } 
} 

工作的示例:http://jsfiddle.net/ot0eaqv1/

+0

这似乎工作得很好,谢谢 –