В моем веб-приложении у меня есть список пользователей в таблице слева и панель сведений о пользователях справа. Когда администратор щелкает пользователя в таблице, его данные должны отображаться справа.
У меня есть UserListView и UserRowView слева, а UserDetailView справа. Вещи вроде работают, но у меня странное поведение. Если я нажимаю несколько пользователей слева, а затем удаляю одного из них, я получаю последовательные окна подтверждения javascript для всех пользователей, которые были отображены.
Похоже, что привязки событий для всех ранее отображаемых представлений не были удалены, что кажется нормальным. Я не должен делать каждый раз новый UserDetailView в UserRowView? Следует ли мне сохранить представление и изменить его эталонную модель? Следует ли мне отслеживать текущий вид и удалять его перед созданием нового? Я заблудился, и любая идея будет приветствоваться. Спасибо !
Вот код левого представления (отображение строки, событие щелчка, создание правого представления)
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;
}
})
delete view
в роутере?