我的Collection中有一个事件监听器,它监听'add'事件,当我添加在路由器中添加的示例数据时,它似乎才会触发,但是当我在视图中添加更多模型时,两者的代码如下:
收藏:
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
。
答案 0 :(得分:6)
在对象上使用on
函数时,您将callback
绑定到该对象上的event
,并且callback
必须是函数,就像这样:
this.on("add", function() { console.log("added"); });