Sencha touch 2 点击按钮时,它不会';行不通

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

我是Sencha Touch的初学者,正在学习中

我使用Sencha Touch 2.1编写的以下代码不起作用。 我可以在浏览器上看到一个按钮,但是点击按钮时,这不会发出警报。 请告诉我怎么了。 对不起,我的英语很差,因为我是日本人。 目录结构:

(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”。我经常使用它。我想你总是有更好的选择:使用控制器和参照/控件。它为我们提供了对按钮对象本身的引用,因此向上遍历它的父对象并不困难。当然,使用
处理程序更方便,但我个人喜欢控制器中的逻辑部分。