In meiner Webanwendung habe ich links eine Benutzerliste in einer Tabelle und rechts einen Benutzerdetailbereich. Wenn der Administrator auf einen Benutzer in der Tabelle klickt, sollten dessen Details rechts angezeigt werden.
Ich habe links eine UserListView und UserRowView und rechts eine UserDetailView. Die Dinge funktionieren, aber ich habe ein komisches Verhalten. Wenn ich links auf einige Benutzer klicke und dann auf einen von ihnen klicke, werden nacheinander Javascript-Bestätigungsfelder für alle angezeigten Benutzer angezeigt.
Es sieht so aus, als ob Ereignisbindungen aller zuvor angezeigten Ansichten nicht entfernt wurden, was normal zu sein scheint. Ich sollte nicht jedes Mal eine neue UserDetailView in UserRowView erstellen. Sollte ich eine Ansicht beibehalten und das Referenzmodell ändern? Sollte ich die aktuelle Ansicht verfolgen und entfernen, bevor ich eine neue erstelle? Ich bin irgendwie verloren und jede Idee wird willkommen sein. Danke !
Hier ist der Code der linken Ansicht (Zeilenanzeige, Klickereignis, Erstellung der rechten Ansicht)
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()
}
})
Und der Code für die rechte Ansicht (Schaltfläche Löschen)
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;
}
})
delete viewim Router?