也许我正在尝试做的是反对MVC,但这里就是。
我有我在Controller上绑定功能的View事件。这些事件更新了我在Controller.init上创建的Model的实例。我希望更新Model实例以引发可以绑定到Controller上的函数的事件。
这样做的正确方法是什么?我调用了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方式”。模型是否只是为了引发事件?但这没有意义。当他们的代理获得异步更新时会引发事件的模型和商店会怎样?
答案 0 :(得分:0)
在4.1x中,唯一可以监听的对象类型是组件。模型不是组件类。 Ext 4.2增加了侦听Store事件的能力。 回到4.1x,您还可以触发应用程序级事件,控制器也可以对这些事件做出反应。
来自MVC tutorial的第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]);