在我的 Web 应用程序中,左边的表中有一个用户列表,右边有一个用户详细信息窗格。当管理员单击表中的用户时,其详细信息应该显示在右侧。
左边是 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;
}
})