骨干绑定在集合上添加事件

时间:2013-12-23 02:17:35

标签: javascript backbone.js backbone-events backbone-collections

我的骨干收藏有问题。我试图收集所有关于收集的事件:

  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的新手,但我认为第二个代码应该触发事件。有人能帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:3)

事件未在集合上触发,因为room模型未与this.collection关联(即尚未添加)。

假设您已将modelcollection定义为:

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