我们都知道做这样的事情是不好的:事件委托给子视图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