Chúng ta đều biết làm một cái gì đó như thế này là xấu:Ủy nhiệm các sự kiện để phụ quan điểm trong Backbone.js
<ul>
<li>Item</li>
<li>Item</li>
... 500 more list items
</ul>
và sau đó ...
$("ul li").bind("click", function() { ... });
Tôi đã nhìn qua rất nhiều của các ví dụ/hướng dẫn Backbone và những điều sau đây có vẻ là một cách tiếp cận tiêu chuẩn để hiển thị một danh sách với các mục, dựa trên một tập hợp các mô hình.
var ListView = Backbone.View.extend() {
tagName: 'ul',
render: function() {
this.collection.each(function(item) {
var view = new ListItemView({model: item});
$(this.el).append(view.render().el);
});
return this;
}
});
Một xem danh sách mục:
var ListItemView = Backbone.View.extend() {
tagName: 'li',
events: {
'click' : 'log'
}
log : function() {
console.log(this.model.get("title"));
}
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
Nếu tôi không nhầm, instantiating ListView với một bộ sưu tập với 500 mô hình, mang lại cho tôi 500 sự kiện nhấp chuột, một cho mỗi hàng. Điều này là xấu phải không?
Tôi biết Backbone đã xây dựng trong đoàn sự kiện cho sự kiện namespaced:
events : {
'click li' : 'log'
}
Tôi cho rằng tôi có thể đặt điều này trong ListView của tôi, và nó sẽ chỉ tạo ra một sự kiện click cho toàn bộ danh sách, nhưng sau đó tôi wouldn không thể truy cập vào dữ liệu mô hình tương ứng với mục danh sách được nhấp.
Các nhà phát triển xương sống mô hình nào sử dụng để giải quyết vấn đề điển hình này?
Cảm ơn, đó là loại thảo luận mà tôi đang tìm kiếm. – Daniel