Sencha touch 2 点击按钮时,它不会';行不通
我是Sencha Touch的初学者,正在学习中 我使用Sencha Touch 2.1编写的以下代码不起作用。 我可以在浏览器上看到一个按钮,但是点击按钮时,这不会发出警报。 请告诉我怎么了。 对不起,我的英语很差,因为我是日本人。 目录结构:Sencha touch 2 点击按钮时,它不会';行不通,sencha-touch-2,Sencha Touch 2,我是Sencha Touch的初学者,正在学习中 我使用Sencha Touch 2.1编写的以下代码不起作用。 我可以在浏览器上看到一个按钮,但是点击按钮时,这不会发出警报。 请告诉我怎么了。 对不起,我的英语很差,因为我是日本人。 目录结构: (root)---app.js |-app---view--Main_view.ja |-controller--Main_cont.js [app.js] Ext.application({ name
(root)---app.js
|-app---view--Main_view.ja
|-controller--Main_cont.js
[app.js]
Ext.application({
name: 'MyApp',
views: ['Main_view'],
controllers: ['Main_cont'],
launch: function() {
Ext.Viewport.add(Ext.create('MyApp.view.Main_view'));
}
});
[Main_view.js]
Ext.create('Ext.Container', {
fullscreen: true,
layout: {
type: 'vbox',
pack: 'center'
},
items: [
{
xtype : 'button',
text : 'Button',
id : 'action'
}
]
});
[Main_cont.js]
Ext.define('MyApp.controller.Main_cont',{
extend: 'Ext.app.Controller',
config: {
control: {
'#action':{
tap : function() {
alert('tap');
}
}
}
}
});
使用按钮,您可以设置“处理程序”属性,而不是点击侦听器:
xtype : 'button',
text : 'Button',
id : 'action',
handler : function(){
alert('tap');
}
试试这个:
'button[id=action]' : {
tap : 'handleTap'
}
其中handleTap
应为控制器中定义的函数
如果您在refs
中定义了它的视图,您甚至可以执行以下操作:
'mainview button[id=action]' : {
tap : 'handleTap'
}
这对我有效控制台中是否有任何错误消息?通常情况下,这是有效的,但我不会使用此重新编译。它打破了传统的MVC模式architecture@ThiemNguyen使用“handler”不会破坏任何东西。这正是你应该如何使用按钮。在处理函数中,您可以触发控制器正在侦听的事件。这正是mvc的工作原理。我还想补充一点,处理程序允许您控制范围。如果在处理程序中使用“this”,它通常是按钮本身,但是如果要访问包含button元素的包装对象(例如,调用容器的方法),则可以在声明处理程序属性之前设置“scope:this”。我经常使用它。我想你总是有更好的选择:使用控制器和参照/控件。它为我们提供了对按钮对象本身的引用,因此向上遍历它的父对象并不困难。当然,使用
处理程序更方便,但我个人喜欢控制器中的逻辑部分。