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