在ExtJS中访问事件参数

时间:2014-07-24 10:08:36

标签: javascript extjs event-handling arguments

通常,当我们创建事件处理程序时,我们会这样:

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, ...),我无法访问事件发送的参数。有没有办法让我访问它们以便将它们放在范围属性中?

1 个答案:

答案 0 :(得分:0)

为什么要设置范围两次?使用scope配置(首选) Ext.bind。另外,您在Ext.bind的返回值上调用myFunction,除非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)
}