我很少被JS困住,但这次我感觉我在某处做错了 - 开明的人,你走了:
在view1中,我有:
listView = new ListView({collection: listElements});
listView.render();
每次listElements更改时都会调用。
在ListView中,该集合被解析为render
方法中的模板,然后在点击时触发一个事件:
//ListView.js
events: {
"click .listEl": "doStuff"
...
},
doStuff: function(e) {
// if this is when the problem arises : this.collection at this place isn't the
// same collection passed to ListView in view1 (or the collection in
// the initialize() ).
// It's actually the first value ever to be rendered with ListElements.
有什么想法吗?
答案 0 :(得分:0)
非常感谢@muistooshort。
这是由于Zombie事件/观点;要“快速”修复它,在你需要摆脱视图并且它与事件绑定后运行它。
this.listView.undelegateEvents();
$(this.listView.el).removeData().unbind();
this.listView.$el.html('');
更优雅的版本是扩展Backbone.View并向其添加remove()方法。