У моїй веб-програмі я маю список користувачів у таблиці ліворуч, а область відомостей про користувача праворуч. Коли адміністратор клацає користувача в таблиці, його деталі повинні відображатися праворуч.
У мене є 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
в маршрутизаторі?