ExtJS多个监听器

时间:2015-07-02 08:30:51

标签: javascript extjs

我有一个属性网格,我想添加多个“afterrender”监听器。是否可以添加多个相同类型的侦听器,或者在一个侦听器中触发多个函数?

我试过了:

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

但它并没有触发这两个功能。

4 个答案:

答案 0 :(得分:8)

使用同一事件调用多个函数的另一种方法是使用on

...
initComponent: function () {
  var me = this;
  me.on('afterrender', me.functionA);
  me.on('afterrender', me.functionB);
  ...
  me.on('afterrender', me.functionN);
  me.callParent(arguments);
}

答案 1 :(得分: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();
        }
    }
});

答案 2 :(得分:1)

是的,这是可能的。您可以使用" addListener "添加它功能

答案 3 :(得分:0)

您可以通过使用其所有参数调用回调函数中的多个函数来完成此操作,如下所示:

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

现在您可以定义函数FooBar,并使用所有afterrender回调函数参数调用它。

相关问题