在extjs MVC架构中如何将参数传递给函数

时间:2013-11-29 07:19:25

标签: extjs extjs4 extjs-mvc

我想将参数“aaa”传递给disableFlied函数,但下面的代码不起作用:

init: function() {

    this.control({
        '#speedCheck': {
            change :this.disableFlied("aaa")
        }
    });

},
disableFlied: function(cmpName){

    var a = Ext.getCmp(cmpName);
    a.setDisabled(!a.isDisabled());

}

如何将“aaa”传递给disableFlied函数?

1 个答案:

答案 0 :(得分:5)

你必须传递一个函数作为事件处理程序,在这里你自己传递调用disableField的结果(即没有,因为这个方法不会返回任何东西)。您需要做的是创建另一个传递所需参数的函数。在Ext中,您可以使用Ext.bind函数执行此操作。

以下是您应该如何使用它:

this.control({
    '#speedCheck': {
        change: Ext.bind(this.disableField, this, ['aaa'])
    }
});

这将在disableField方法周围创建一个闭包。这个 相当于这个vanilla javascript代码:

    '#speedCheck': {
        // This is the default scope, but I prefer to make it
        // explicit that the handler must be called in the
        // current scope
        scope: this
        ,change: function() {
            // When this function is called, it will call
            // disableField with the desired parameter
            this.disableField('aaa');
        }
    }