我的骨干收藏有问题。我试图收集所有关于收集的事件:
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的新手,但我认为第二个代码应该触发事件。有人能帮助我吗?谢谢!
答案 0 :(得分:3)
事件未在集合上触发,因为room
模型未与this.collection
关联(即尚未添加)。
假设您已将model
和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);
});
为了使您的代码按预期工作,您必须add
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。