我想将参数“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函数?
答案 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');
}
}