Backbone - merge:true - 选项不更改UI

时间:2016-08-28 10:12:17

标签: javascript model-view-controller backbone.js model marionette

当我写作时,我注意到了 collection1.add(model1); - > UI变化很好。但是,当我这样做的时候 collection1.add(model1, {merge: true});
然后App.div1.currentView.collection.models显示已更改的模型(在控制台中),但UI不会更改。

我不知道为什么?

(注1:我使用Marionette.js和Backbone)
(注2:App是全局Marionette对象; div1是html中的Marionette区域)

2 个答案:

答案 0 :(得分:1)

仅当将新元素添加到集合时才会触发事件add。如果merge=false(默认行为)将添加新元素(可能)(并且您的集合具有两个相同的属性且不同的cidid)。使用merge=true旧元素将被更新,并且将触发事件update

只有在添加新元素时才会触发

add事件。

如果要添加,更改或删除元素,将触发

update事件。

解决方案:在update事件上渲染区域。

答案 1 :(得分:0)

这适用于collection1.add(model1, {merge: true}) -

modelEvents: {
    "change": "render"
}

// "update": "render" did not work

将^^添加到负责Marionette.ItemView的{​​{1}}。