Trong ứng dụng web của mình, tôi có danh sách người dùng trong bảng bên trái và ngăn chi tiết người dùng ở bên phải. Khi quản trị viên nhấp vào một người dùng trong bảng, thông tin chi tiết của nó sẽ được hiển thị ở bên phải.
Tôi có UserListView và UserRowView ở bên trái và UserDetailView ở bên phải. Mọi thứ đều có tác dụng, nhưng tôi có một hành vi kỳ lạ. Nếu tôi nhấp vào một số người dùng ở bên trái, sau đó nhấp vào xóa trên một trong số họ, tôi sẽ nhận được các hộp xác nhận javascript liên tiếp cho tất cả người dùng đã được hiển thị.
Có vẻ như các ràng buộc sự kiện của tất cả các chế độ xem được hiển thị trước đó vẫn chưa bị xóa, điều này dường như là bình thường. Tôi không nên tạo UserDetailView mới mỗi lần trên UserRowView? Tôi có nên duy trì một chế độ xem và thay đổi mô hình tham chiếu của nó không? Tôi có nên theo dõi chế độ xem hiện tại và xóa nó trước khi tạo một chế độ xem mới không? Tôi hơi lạc lõng và mọi ý tưởng sẽ được hoan nghênh. Cảm ơn bạn !
Đây là mã của chế độ xem bên trái (hiển thị hàng, sự kiện nhấp chuột, tạo chế độ xem bên phải)
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()
}
})
Và mã cho chế độ xem bên phải (nút xóa)
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
trong bộ định tuyến?