我在解除绑定视图事件时遇到了麻烦。我创建一个视图,即
var myView = Backbone.View.extend({
events : {
"click .item" : "nextPage",
"scroll" : "isScrolling",
"click .zoom" : "imageZoom"
},
initialize : function(){
this.collection.on("reset", this.render, this);
},
onClose : function(){
...
}
});
var view = new myView();
destroyArray.push(view);
一旦我需要销毁视图,我通过路由器调用一个函数,该函数循环遍历销毁数组并在渲染下一个视图之前调用 destroyArray[i].close()(见下文)。
Backbone.View.prototype.close = function(){
this.undelegateEvents();
this.$el.removeData().unbind();
this.remove();
if (this.onClose){
this.onClose();
}
}
close 函数明显地从页面中删除视图,但在视图中来回移动事件(和 DOM 元素)实际上增加了。有什么我做错了吗?
在视图之间移动时,我重新初始化它们,即
var view = new myView();
destroyArray.push(view);
...
view.close();
...
var view1 = new myView1();
destroyArray.push(view1);
我认为这可能会导致我的问题,但添加的事件不等于视图中绑定的事件数。
任何帮助是极大的赞赏。谢谢。