5

我的控制器有问题

Ext.define('app.controller.myController', {
    init: function() {
        this.control({
            '#myinputfield': {
                change: this.textFieldChange(parameter)
            }
        })
    },
    textFieldChange: function(parameter) {
      //do something
    }
});

它看起来像这样问题是当我在这里给出参数时

change: this.textFieldChange(parameter)

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

没有参数它等待更改事件应该可以帮助我吗?

4

1 回答 1

8

这是因为:

change: this.textFieldChange在这里,您为此属性提供了此功能的参考

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

您可以eOpts在函数定义中使用该变量,用于自定义参数发送,参见示例:

Ext.define('app.controller.myController', {
    初始化:函数(){
        这个.控制({
            '#myinputfield':{
                改变: {
                    fn : this.textFieldChange,
                    参数:{
                        param1: '东西'
                    }
                }
            }
        })
    },
    textFieldChange:函数(文本字段,新值,旧值,eOpts){
        var params = eOpts.params;
        控制台.log(params.param1);
      //做一点事
    }
});

于 2013-08-26T08:17:39.443 回答