【发布时间】:2014-02-20 12:13:31
【问题描述】:
我的集合中有一个事件侦听器,它侦听“添加”事件,该事件似乎仅在我添加到路由器中的示例数据被添加时触发,但当我在视图中添加更多模型时不会触发,两者的代码如下:
收藏:
Application.Collection.extend({
name: "todos/todos",
initialize: function() {
this.on("add", console.log("added"));
},
url: "/todo-application/todos"
});
路由器(这会触发一个事件):
collection = new Application.Collections["todos/todos"]();
var m = new Application.Model({
title: 'Finish screencast',
done: true
});
collection.add(m);
查看(这不会触发事件):
Application.View.extend({
name: "todos/index",
events: {
"submit form": function(event) {
event.preventDefault();
var attrs = this.serialize();
this.collection.add(attrs);
this.$('input[name=title]').val('');
}
}
});
视图中的collection.add 确实有效,因为模型已添加到集合中并显示在屏幕上,但集合仅在示例时的初始页面加载时为我提供console.log()数据已添加...
编辑:
根据我的 Backbone Chrome 扩展,事件确实在触发,但由于某种原因,此事件绑定不起作用,我尝试使用 this.listenTo 而不是 .on。
【问题讨论】:
-
你在构造视图时是否传入了集合?例如
new View({ collection: collection})