4
我的事件不像我所希望的那样工作,我想我知道为什么。当单击跨页跨度时,一切都呈现正确。但我意识到 - 也许这些事件不会重新贴上新的标记?那可能是为什么它只能工作一次? (如果我点击数字10的跨度,应该出现10个项目,但之后,我点击的任何东西都不会改变任何东西)backbone.js - 只发生一次的事件
什么是更好的方法来组织这个?模板是否应该不包含分页部分?在再次渲染后,我如何将骨干事件附加到标记上?
var ListView = Backbone.View.extend({
initialize: function() {
var self = this;
this.collection.bind("refresh", function(){self.render();});
this.render();
},
events: {
'click ul#perpage span': 'setperpage'
},
setperpage: function(event) {
this.collection.perpageurl = '/perpage/' + $(event.target).text();
this.collection.fetch();
this.collection.refresh();
},
render: function() {
template = _.template('\
<table>\
<% _(collection).each(function(model){%>\
<tr><td><%=model.id%></td><td><%=model.name%></td><td><%=model.email%></td></tr>\
<%}); %>\
</table>\
<ul id="perpage">\
<li><span>5</span></li>\
<li><span>10</span></li>\
</ul>\
');
var context = {collection: this.collection.toJSON()};
$(this.el).html(template(context));
$('#app').html(this.el);
return this;
}
});
'event.target'可能会引起误解,您应该按照http://www.quirksmode.org/js/events_order.html中所述使用'event.currentTarget' – pawlik 2011-04-16 22:05:20