Backbone.js 从集合中删除模型时,木偶集合视图将重新渲染
我解决了我的问题,但我想知道为什么,这样我(希望)可以更好地理解木偶/脊梁 问题删除项目时,以下代码会更新视图:Backbone.js 从集合中删除模型时,木偶集合视图将重新渲染,backbone.js,marionette,Backbone.js,Marionette,我解决了我的问题,但我想知道为什么,这样我(希望)可以更好地理解木偶/脊梁 问题删除项目时,以下代码会更新视图: var MainView = Marionette.ItemView.extend({ template: "#sample-template", events :{ "click #remove" : "remove" }, remove: function(){ this.trigger("p
var MainView = Marionette.ItemView.extend({
template: "#sample-template",
events :{
"click #remove" : "remove"
},
remove: function(){
this.trigger("property:remove", this.model);
}
});
var CollectionView = Marionette.CollectionView.extend({
itemView: MainView,
initialize: function(){
this.on("itemview:property:remove", function(view, model){
alert(this.collection.length);
this.collection.remove(model);
alert(this.collection.length);
});
}
});
修复程序下面的代码会按预期更新视图:
var MainView = Marionette.ItemView.extend({
template: "#sample-template",
triggers :{
"click #remove" : "property:remove"
},
});
var CollectionView = Marionette.CollectionView.extend({
itemView: MainView,
initialize: function(){
this.on("itemview:property:remove", function(view, model){
alert(this.collection.length);
this.collection.remove(view.model);
alert(this.collection.length);
});
}
});
Backbone.View
定义了一个名为remove
的方法,用于从DOM中删除视图。您的第一个示例覆盖了该方法
如果将
remove
重命名为类似removeIt
的名称,名称冲突将消失,代码将按预期工作。不管怎样,我认为第二种方法更适合这种情况。对于任何遇到这种情况的人,请记住,木偶2.x将itemview更改为childview。把我绊倒了一点。干杯 就是这样。我喜欢那些愚蠢的事情把你搞得一团糟。是的,第二个选择是更干净。谢谢