问题
I have a property grid that I want to add multiple "afterrender" listeners to. Is it possible to add multiple listeners of the same type, or fire multiple functions within one listener?
I've tried:
afterrender: function(){...},
function(){...}
but it does not fire both of the functions.
回答1:
Just make multiple function calls within the function callback. Below shows a full example of this...
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:
Another way to call multiple functions with the same event is by using on:
...
initComponent: function () {
var me = this;
me.on('afterrender', me.functionA);
me.on('afterrender', me.functionB);
...
me.on('afterrender', me.functionN);
me.callParent(arguments);
}
回答3:
yes it is possible. you can add it with "addListener" function.
回答4:
You can do it by calling several functions in a callback function with its all arguments, like this:
afterrender: function() {
Foo.apply(this, arguments);
Bar.apply(this, arguments);
}
Now you can define functions Foo and Bar and it would be called with all afterrender callback function arguments.
来源:https://stackoverflow.com/questions/31179396/extjs-multiple-listeners