我在左侧有一个UserListView和UserRowView,右侧有一个UserDetailView。一切似乎都正常工作,但是我遇到了奇怪的行为。如果我先单击左侧的一些用户,然后单击其中一个用户的删除按钮,那么我会得到连续的JavaScript确认框,这些框显示所有已经显示过的用户。
看起来之前显示的所有视图的事件绑定没有被删除,这似乎很正常。我不应该每次在UserRowView上创建一个新的UserDetailView吗?我应该维护一个视图并更改其引用模型吗?我应该跟踪当前视图并在创建新视图之前删除它吗?我有点迷茫,欢迎任何想法。谢谢!
这是左侧视图的代码(行显示,单击事件,右侧视图创建):
window.UserRowView = Backbone.View.extend({
tagName : "tr",
events : {
"click" : "click",
},
render : function() {
$(this.el).html(ich.bbViewUserTr(this.model.toJSON()));
return this;
},
click : function() {
var view = new UserDetailView({model:this.model})
view.render()
}
})
这是右侧视图(删除按钮)的代码
window.UserDetailView = Backbone.View.extend({
el : $("#bbBoxUserDetail"),
events : {
"click .delete" : "deleteUser"
},
initialize : function() {
this.model.bind('destroy', function(){this.el.hide()}, this);
},
render : function() {
this.el.html(ich.bbViewUserDetail(this.model.toJSON()));
this.el.show();
},
deleteUser : function() {
if (confirm("Really delete user " + this.model.get("login") + "?"))
this.model.destroy();
return false;
}
})