我們都知道做這樣的事情是不好的:事件委託給子視圖Backbone.js的
<ul>
<li>Item</li>
<li>Item</li>
... 500 more list items
</ul>
然後......
$("ul li").bind("click", function() { ... });
我一直在尋找通過大量Backbone示例/指南和以下內容似乎是一個基於模型集合來呈現項目列表的標準方法。
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;
}
});
列表項的看法:
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;
}
});
如果我沒有記錯,實例化的ListView與500款集合,給了我500個點擊事件,每行一個。這是不好的權利?
我知道骨幹已建成事件代表團命名空間的事件:
events : {
'click li' : 'log'
}
我想我可以把這個在我的ListView,它只會造成整個列表點擊事件,但後來我不會無法訪問與點擊的列表項目對應的模型數據。
骨幹開發人員用什麼模式解決這個典型問題?
謝謝,那是我正在尋找的那種討論。 – Daniel 2011-12-22 12:35:35