Extjs 4.2监听器函数中的参数

时间:2013-08-26 07:52:59

标签: events extjs controller extjs4 controls

我的控制器出了问题

Ext.define('app.controller.myController', {
    init: function() {
        this.control({
            '#myinputfield': {
                change: this.textFieldChange(parameter)
            }
        })
    },
    textFieldChange: function(parameter) {
      //do something
    }
});
它看起来像这样 问题是我在这里给出参数

change: this.textFieldChange(parameter)

然后它在站点加载后启动,我不知道为什么。

没有参数它等待改变事件应该如此 可以帮我吗?

1 个答案:

答案 0 :(得分:7)

这是因为:

change: this.textFieldChange此处您将此函数的引用提供给此属性

change: this.textFieldChange(parameter)在这里,您将函数的结果提供给此属性(如果我们不使用return,那么它将是undefined)。

您可以在函数定义中使用eOpts变量来进行自定义参数发送,请参阅示例:

Ext.define('app.controller.myController', {
    init: function() {
        this.control({
            '#myinputfield': {
                change: {
                    fn : this.textFieldChange,
                    params : {
                        param1: 'something'
                    }
                }
            }
        })
    },
    textFieldChange: function(textfield, newValue, oldValue, eOpts) {
        var params = eOpts.params;
        console.log(params.param1);
      //do something
    }
});