在何处使用监听器以及在何处使用控制器 - Sencha Touch 2

时间:2014-06-02 16:58:41

标签: extjs sencha-touch

我对侦听器与控制器的正确使用感到困惑

E.g。对于相同的按钮,我可以在按钮描述中将按钮点击事件的处理程序设置为:

Ext.Viewport.add({
    xtype: 'button',
    centered: true,
    text: 'My Button',

    listeners: {
        tap: function() {
            alert("You tapped me");
        }
    }
});

以及如下单独的控制器。

Ext.define("NotesApp.controller.Notes", {
    extend: "Ext.app.Controller",
    config: {
        refs: {
            newNoteBtn: Get reference to button here
        },
        control: {
            newNoteBtn: {
                tap: "onNewNote"
            }
        }
    },
    onNewNote: function () {
        console.log("onNewNote");
    }


});

什么是最佳做法,是否有权衡?

由于

1 个答案:

答案 0 :(得分:1)

对于控制器或不是控制器,这就是问题。

嗯,从技术上讲,没有什么能阻止你做一个或另一个。我已经建立了一种如何自己决定的方法:

  1. 如果他们正在做的工作没有跨越视图的边界,我会在视图上安装监听器。如果我们以表单为例,禁用和启用,显示和隐藏字段,如果它只依赖于表单的状态保留在表单中 - 没有控制器。
  2. 如果一个视图中的操作(例如,单击按钮)影响另一个视图或整个应用程序,我将逻辑委托给控制器。
  3. 同样,这些是我的偏好,你可以有另一个。