2015-10-14 89 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

這似乎工作得很好,謝謝 –