我对 Backbone 集合有疑问。我试图监听集合中的所有事件:
this.collection.on('all', function(ev) {
console.log(ev);
});
只有当我创建这样的记录时,集合才会触发事件:
this.collection.create({name: 'aloha'});
但当我直接创建模型实例时则不然:
var room = new Room({name: 'hello'}); // this code not trigger any events on collection
room.save();
我是 Backbone 新手,但我认为第二个代码应该触发事件。有人可以帮助我吗?谢谢!
最佳答案
该事件不会在集合上触发,因为 room
模型未关联(即尚未添加)到 this.collection
。
假设您已经定义了类似于以下内容的模型
和集合
:
var Room = Backbone.Model.extend();
var Rooms = Backbone.Collection.extend({
model:Room
});
var rooms = new Rooms();
rooms.on('all',function(eventName) {
console.log(eventName);
});
为了让您的代码按预期工作,您必须将 room
模型添加
到 rooms
集合中,例如:
var room = new Room({'name':'hello'});
// This will trigger the add event on the collection
rooms.add(room);
// save the model
room.save();
以下是上述代码块的简写:
var room = rooms.create({'name':'hello'});
这是一个FIDDLE显示行为。
关于javascript - 用于在集合上添加事件的主干绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20736180/