作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现了我的问题,但我想知道为什么,以便我可以(希望)更好地理解 Marionette/backbone。
问题下面的代码确实会在删除项目时更新 View :
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);
});
}
});
A JsFiddle to view in all its glory
修复下面的代码确实按预期更新了 View :
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 中移除 View 。您的第一个示例覆盖了该方法。
如果您将 remove
重命名为 removeIt
之类的名称,则名称冲突将消失,代码按预期工作。无论如何,我认为第二种方法更适合这种情况。
关于backbone.js - 当模型从集合中移除时,Marionette CollectionView 会重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699057/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!