someClass = Ext.extend(someClassB, {
_someFunctionC{
someButton = new Ext.button({
handler: function () {
this._onClick('click');
}
}),
_onClick(someMessage){
Ext.Msg.alert(someMessage);
}
}
}
_onClick吃一个参数;在上面的代码中,您放入了“click”事件,因为您希望在用户单击按钮后执行_onClick。但是,如何指定此特定的“单击”注册并同时将局部变量作为_onClick参数传递?
顺便说一句,为什么当API声明处理程序始终与点击有关时,您甚至必须指定'click'?这些附加信息不是不必要的吗?
答案 0 :(得分:1)
通常你会这样设置它。没有真正需要传递参数,因为someFunction是你的“类”的成员,并且可以访问你想要的任何数据。
var button = new Ext.Button({
handler: this.someFunction
scope: this
});
someFunction: function() {
// do something interesting.
}
答案 1 :(得分:1)
所以,如果我理解正确你想设置处理程序配置选项但是自己设置参数吗?
这样做你想要的吗?
// clicking the button alerts 'Hello World'
new Ext.Button({
text: 'Test',
handler: function(value){
alert('Hello, ' + value);
}.createCallback('World')
});
注意在匿名函数上执行的createCallback
,这会为handler
创建一个回调函数,该函数只传递给您传递给createCallback
的参数。
答案 2 :(得分:1)
我发现这样做的另一种方法是传递自定义配置选项和按钮。假设您想要splitbutton
可以选择要添加的横幅数量。 (这是来自最近的一个项目)
{
xtype: 'splitbutton',
iconCls: 'icon addBanners',
ref: '../addBanner',
text: 'Add Banner',
menu: new Ext.menu.Menu({
items: [{
text: 'Add 10 Banners',
scope: this,
handler: this.addBanner,
numBanners: 10
},{
text: 'Add 20 Banners',
scope: this,
handler: this.addBanner,
numBanners: 20
}]
}),
scope: this,
handler: this.addBanner,
numBanners: 1
}
在你的功能中:
addBanner: function(button, event) {
if (button.numBanners) {
// do whatever
}
}
答案 3 :(得分:0)
您还可以创建一个回调函数,在调用它时插入额外的参数:
var button = new Ext.Button({
handler: this.someFunction.createDelegate(button,['Some message'])
});