0

也许我想要做的是反对 MVC,但这里就是这样。

我有绑定到控制器上的功能的视图事件。这些事件更新了我在 Controller.init 上创建的模型实例。我希望更新模型实例来引发可以绑定到控制器上的函数的事件。

这样做的正确方法是什么?我调用 Controller.control 但我不知道要为选择器传递什么。

这是我的 Controller.init:

var me = this;

me.keysModelInstance = me.getKeysModel().create();
me.control({
    'model#keys': {
        onkeyschange: me.onKeysModelInstanceChange
    }
});

这是我的模型:

Ext.define('pronghorn_ui_keyboard.model.Keys', {
    extend: 'Ext.data.Model',

    fields: [
        {
            name: 'keys',
            type: 'string'
        }
    ],

    add: function(key) {
        this.set('keys', this.get('keys') + key);
        this.fireEvent('onkeyschange');
    },

    clear: function() {
        this.set('keys', '');
        this.fireEvent('onkeyschange');
    }

});

我知道我可以通过自定义侦听器获得我想要发生的事情,但这不像“MVC 方式”。模型只是不打算引发事件吗?不过,这没有任何意义。当代理获得异步更新时引发事件的模型和商店呢?

4

1 回答 1

0

在 4.1x 中,控制器可以监听的唯一对象类型是组件。模型不是组件类。Ext 4.2 增加了监听 Store 事件的能力。回到 4.1x,您还可以触发应用程序级事件,控制器也可以对这些事件做出反应。

从 MVC教程的第 3 部分:

init: function() {
    ...
    // We listen for the application-wide stationstart event
    this.application.on({
        stationstart: this.onStationStart,
        scope: this
    });
},

被解雇:

 this.application.fireEvent('stationstart', selection[0]);
于 2013-03-30T04:07:44.713 回答