【发布时间】:2013-04-10 04:12:19
【问题描述】:
我正在使用 Backbone Layout Manager Boilerplate。不幸的是,发生了一个非常令人沮丧的错误。我喜欢将项目列表呈现为由 insertView 函数插入的子视图。在第一次加载时一切正常。但是重新加载后,点击事件不再起作用:(。我已经尝试在 TableItem 视图上手动调用 delegateEvents() 但没有任何改变。我希望任何人都可以给我一个线索。
App.Views.Item = Backbone.View.extend({
template: "templates/item",
tagName: "li",
events: {
"click .applyButton" : "apply",
"click .viewDetailsButton" : "showDetail"
},
serialize: function() {
return { table : this.model.toJSON() };
},
apply: function(ev) {
ev.preventDefault();
alert("apply button clicked");
},
showDetail: function(ev) {
ev.preventDefault();
var id = this.model.get("_id");
app.router.navigate("#events/"+ id, {trigger : true})
}
});
/*
* List View
*/
App.Views.List = Backbone.View.extend({
template: "templates/list",
tagNam: "ul",
className: "tableList",
beforeRender: function() {
var events = this.model.get("userEvents").get("hosting");
events.each(function(model) {
this.insertView(new App.Views.Item({ model : model }));
}, this);
},
serialize: function() {
return {};
}
});
【问题讨论】:
-
我也有同样的问题。我的猜测是,每次在顶视图或任何子视图上调用渲染时,您都必须手动委派事件......对我来说工作正常,但我不确定这是最好的解决方案
标签: backbone.js backbone-events backbone-boilerplate backbone-layout-manager