Backbone - 合并:true - 选项未更改 UI
Backbone - merge: true - option not changing UI
我注意到当我写
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区域)
事件add
只有在新元素被添加到集合中时才会触发。如果 merge=false
(默认行为),将添加新元素(可能)(并且您的集合具有两个相同的属性和不同的 cid
、id
)。使用 merge=true
将更新旧元素,并触发事件 update
。
add
只有添加新元素才会触发事件
update
如果要添加、更改或删除元素,将触发事件。
解决方案:在 update
事件上渲染区域。
这就是 collection1.add(model1, {merge: true})
-
的作用
modelEvents: {
"change": "render"
}
// "update": "render" did not work
将 ^^ 添加到 Marionette.ItemView
,它负责 model1
。
我注意到当我写
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区域)
事件add
只有在新元素被添加到集合中时才会触发。如果 merge=false
(默认行为),将添加新元素(可能)(并且您的集合具有两个相同的属性和不同的 cid
、id
)。使用 merge=true
将更新旧元素,并触发事件 update
。
add
只有添加新元素才会触发事件
update
如果要添加、更改或删除元素,将触发事件。
解决方案:在 update
事件上渲染区域。
这就是 collection1.add(model1, {merge: true})
-
modelEvents: {
"change": "render"
}
// "update": "render" did not work
将 ^^ 添加到 Marionette.ItemView
,它负责 model1
。