通常,当我们创建事件处理程序时,我们会这样做:
boxready: function (me, width, height, eOpts) {
me.X() <-refers to the component whose event is triggered and calls the function X()
}
然而,我在一种情况下,我想这样做:
boxready: {
fn: Ext.bind(this.myFunction, this),
scope: me
}
但是因为我不使用function(me, ...)
,所以我不能访问事件发送的参数。我是否有办法访问它们以便将它们放入scope属性中?
为什么要设置两次作用域?可以使用scope
配置(首选)或 Ext.bind
。此外,您在myFunction
的返回值上调用Ext.bind
,除非myFunction
返回函数本身,否则这没有意义。
建议方法:
listeners: {
boxready: function(me, width, height, eOpts) {
//...
},
scope: this
}
或者如果您有多个需要不同作用域的侦听器:
listeners: {
boxready: {
fn: function(me, width, height, eOpts) {
//...
},
scope: this
},
destroy: {
fn: function() {},
scope: this.otherScope
}
}
也可以,但不推荐使用:
listeners: {
boxready: Ext.bind(function(me, width, height, eOpts) {
//...
}, this)
}