我有一个属性网格,我想添加多个“afterrender”监听器。是否可以添加多个相同类型的侦听器,或者在一个侦听器中触发多个函数?
我试过了:
afterrender: function(){...},
function(){...}
但它并没有触发这两个功能。
答案 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)
只需在函数回调中进行多个函数调用。下面显示了这个...的完整示例。
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)
答案 3 :(得分:0)
您可以通过使用其所有参数调用回调函数中的多个函数来完成此操作,如下所示:
afterrender: function() {
Foo.apply(this, arguments);
Bar.apply(this, arguments);
}
现在您可以定义函数Foo
和Bar
,并使用所有afterrender
回调函数参数调用它。