Marionette - 模型事件不工作
Marionette - modelEvents not working
我正在尝试使用 ItemView
的 modelEvents
部分,但由于某些原因,它不起作用。
我设置了一个简单的测试用例,其中我有一个 CollectionView
和 4 个 ItemView
。当我单击其中一个 ItemView
时,我会更改 CollectionView
(this.collection.models[0].attributes = {...}
) 中第一个 ItemView
的模型。即使模型的内容已更改,更改事件也不会触发。
在 ItemView
中,我尝试使用具有不同选项(modelEvents: {"change": "functionToCall"}
;modelEvents: {"change:attributes": "functionToCall"}
)的 modelEvents
,尝试使用简单的 listenTo
,在初始化函数:
this.listenTo(this.model, "change", function(){
this.functionToCall();
});
或
this.listenTo(this.model.attributes, "change", function(){
this.functionToCall();
});
但其中 none 有效。
这不是第一次这样的散列真的不想工作(例如 ui: {}
和其他一些)我不知道问题是什么(我正在使用 Marionette 2.4.3 和 jQuery 2.1.4(只是因为 Marionette 需要它))。
根据 Backbone (http://backbonejs.org/#Model-attributes) 中的文档,我认为问题可能与您直接通过属性 属性 更新模型有关。文档明确指出应使用 model.set(..)
更新模型 - 不这样做不会触发与更改模型数据相关的事件。
我正在尝试使用 ItemView
的 modelEvents
部分,但由于某些原因,它不起作用。
我设置了一个简单的测试用例,其中我有一个 CollectionView
和 4 个 ItemView
。当我单击其中一个 ItemView
时,我会更改 CollectionView
(this.collection.models[0].attributes = {...}
) 中第一个 ItemView
的模型。即使模型的内容已更改,更改事件也不会触发。
在 ItemView
中,我尝试使用具有不同选项(modelEvents: {"change": "functionToCall"}
;modelEvents: {"change:attributes": "functionToCall"}
)的 modelEvents
,尝试使用简单的 listenTo
,在初始化函数:
this.listenTo(this.model, "change", function(){
this.functionToCall();
});
或
this.listenTo(this.model.attributes, "change", function(){
this.functionToCall();
});
但其中 none 有效。
这不是第一次这样的散列真的不想工作(例如 ui: {}
和其他一些)我不知道问题是什么(我正在使用 Marionette 2.4.3 和 jQuery 2.1.4(只是因为 Marionette 需要它))。
根据 Backbone (http://backbonejs.org/#Model-attributes) 中的文档,我认为问题可能与您直接通过属性 属性 更新模型有关。文档明确指出应使用 model.set(..)
更新模型 - 不这样做不会触发与更改模型数据相关的事件。