2014-02-03 2 views
0

Я создал класс для combobox, который может быть создан всякий раз, когда в проекте нужен сборщик.EXTJS combobox изменение кода, выполняемого при загрузке страницы

Теперь для каждого события изменения каждого комбо могут быть разные действия, поэтому я не написал никакого кода в своем классе combo для события комбо-смены.

Мне нужно что-то вроде того, что я могу назначить код для изменения события комбо, когда создаю его или создав.

Поэтому я пишу ниже код.

Ext.getCmp('combo1').on('change', Ext.getCmp('grid').getfilteredStore()); 

Но проблема с этим кодом является: Ext.getCmp('grid').getfilteredStore() получить срабатывает при загрузке страницы только, а не на change комбо.

Ниже код, создать комбо, когда требуется

Ext.create('Comboclass', { 
     id: 'comboId'}); 

Ниже приводится комбинированный класс

Ext.define('Comboclass', { 
    extend: 'Ext.Container', 

    initComponent: function() { 

     Ext.apply(this, { 
      items: [{ 
       xtype: 'combo', 
       id: this.id, 
       store: store1 
       listeners: { 
        beforeselect : function (combo, r, index) { 
         if (r.data.id && r.data.id < 0) { 
          r.data.selectable = false; 
          return r.data.selectable; 
         } 
        }, 
        change: function (field, newValue, oldValue) { 
         console.log('in dropdown'); 
        } 
       } 
      }] 
     }); 
     this.callParent(arguments); 
    } 
}); 

Может ли один помочь решить эту проблему?

Заранее спасибо.

ответ

1

Потому что вы выполняете функцию. on ожидает ссылки на функцию.

Это разница между:

var x = fn(); // x now contains the result of fn 
var y = fn; // y now points to the function 

Вы должны удалить последние круглые скобки:

Ext.getCmp('combo1').on('change', Ext.getCmp('grid').getfilteredStore);

+0

спасибо ... что было очень поможет полный –

+0

'Ext.getCmp ('Combo1') .on ('change', Ext.getCmp ('grid'). getfilteredStore, Ext.getCmp ('grid')); ' –

Смежные вопросы