我正在努力实现一些相当简单的事情:使用控制器将事件附加到特定控件,但我很难使用Sencha Architect来表示这一点。
我有一个名为“Login-Button-Login”的按钮。
在我的控制器中,如果我有代码:
config: {
control: {
"button": {
tap: 'onButtonTap'
}
}
},
onButtonTap: function(button, e, eOpts) {
Ext.Msg.alert("onButtonTap fired");
},
按钮按预期工作。这很好,但显然它适用于所有按钮。我添加了对“Login-Button-Login”的引用(不是我选择的名字!):
config: {
refs: {
loginButtonTap: 'Login-Button-Login'
},
control: {
"button": {
tap: 'onButtonTap'
},
"Login-Button-Login": {
tap: 'onButtonTap2'
}
}
},
但是,我现在如何使用引用“loginButtonTap”作为控件对象中的项目?无论我尝试使用Sencha Architect控件,我最终只能使用“Login-Button-Login”直接引用。
相关地,如何将此控制器链接到包含按钮的“登录”视图?当然,我不需要为每个参考使用完整的选择器?很明显,即使我可以完成这项工作,它目前也不会起作用,因为Login-Button-Login需要引用“登录”视图。
答案 0 :(得分:1)
只需使用控件的id
(或itemId
)作为事件处理程序配置中controlQuery
的值:
config: {
control: {
"#btnWhatever": {
tap: 'onWhateverTap'
},
}
我更喜欢使用这种将事件附加到元素的方法,因为我懒得做双重工作 - 指定对按钮的引用,然后在事件处理程序controlQuery
中指定该引用。 onWhateverTap
获取对按钮的引用作为参数,大多数时候您不需要其他地方的引用。