W mojej aplikacji internetowej mam listę użytkowników w tabeli po lewej stronie i okienko szczegółów użytkownika po prawej stronie. Kiedy administrator kliknie użytkownika w tabeli, jego szczegóły powinny zostać wyświetlone po prawej stronie.
Mam UserListView i UserRowView po lewej stronie i UserDetailView po prawej stronie. Niby wszystko działa, ale mam dziwne zachowanie. Jeśli kliknę niektórych użytkowników po lewej stronie, a następnie kliknę usuń na jednym z nich, otrzymam kolejne pola potwierdzenia javascript dla wszystkich wyświetlonych użytkowników.
Wygląda na to, że powiązania zdarzeń wszystkich wcześniej wyświetlanych widoków nie zostały usunięte, co wydaje się normalne. Nie powinienem za każdym razem tworzyć nowego UserDetailView na UserRowView? Czy powinienem zachować widok i zmienić jego model referencyjny? Czy powinienem śledzić bieżący widok i usunąć go przed utworzeniem nowego? Jestem trochę zagubiony i każdy pomysł będzie mile widziany. Dziękuję Ci !
Oto kod lewego widoku (wyświetlanie wierszy, kliknięcie, tworzenie prawego widoku)
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()
}
})
I kod do prawego widoku (przycisk usuwania)
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 view
w routerze?