2015-07-02 6 views
3

У меня есть сетка свойств, в которой я хочу добавить несколько прослушивателей «afterrender». Можно ли добавить несколько слушателей одного типа или запустить несколько функций внутри одного прослушивателя?ExtJS несколько слушателей

Я пробовал:

afterrender: function(){...}, 
function(){...} 

но это не срабатывает и функций.

ответ

3

Просто выполните несколько вызовов функций в функции обратного вызова функции. Ниже показан полный пример этого ...

Working Fiddle

Ext.create('Ext.grid.property.Grid', { 
    title: 'Properties Grid', 
    width: 300, 
    renderTo: Ext.getBody(), 

    functionOne: function() { 
     alert("functionOne called"); 
    }, 

    functionTwo: function() { 
     alert("functionTwo called"); 
    }, 

    listeners: { 
     afterrender: function() { 
      var me = this; 
      me.functionOne(); 
      me.functionTwo(); 
     } 
    } 
}); 
+0

Спасибо, это сработало. – Benirving92

+0

Или 'afterrender: Ext.Function.createSequence (this.functionOne, this.functionTwo, this)' –

+0

вы можете зарегистрировать несколько слушателей непосредственно с помощью функции addListener. Не нужно называть себя. – Raghavendra

0

да можно. вы можете добавить его с помощью функции «addListener».

+1

вниз избирателю вы можете объяснить, что проблема с этим. – Raghavendra

0

Вы можете сделать это путем вызова нескольких функций в функции обратного вызова с его все аргументы, например:

afterrender: function() { 
    Foo.apply(this, arguments); 
    Bar.apply(this, arguments); 
} 

сейчас вы можете определить функции Foo и Bar, и он будет вызываться со всеми аргументами функции обратного вызова afterrender.

6

Другой способ вызвать несколько функций с тем же событием является использование on:

... 
initComponent: function() { 
    var me = this; 
    me.on('afterrender', me.functionA); 
    me.on('afterrender', me.functionB); 
    ... 
    me.on('afterrender', me.functionN); 
    me.callParent(arguments); 
} 
Смежные вопросы