В моем веб-приложении у меня есть список пользователей в таблице слева и панель сведений о пользователе справа. Когда администратор нажимает на пользователя в таблице, его данные должны отображаться справа.
У меня есть 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;
}
})