Backbone.Collections中使用的集合和上下文是什么?

时间:2012-10-07 07:43:28

标签: javascript backbone.js

在集合中打印出模型时,我会看到两个“未定义”列表,contextcollection,它们与我的主干集合的长度相同,我想知道它们是什么用于。

var collection = new Backbone.Collection([{x:1},{x:2},{x:3}]);
print(collection.at(0));

{
  _callbacks: {
    all: {
      next: {
        callback: function (event, model, collection, options) {...},
        context: [undefined, undefined, undefined],
        next: {}
      },
      tail: {}
    }
  },
  _escapedAttributes: {},
  _pending: {},
  _previousAttributes: {x: 1},
  _silent: {},
  attributes: {x: 1},
  changed: {},
  cid: "c11",
  collection: [undefined, undefined, undefined]
}

1 个答案:

答案 0 :(得分:3)

context是事件回调中的“this”值(检查使用on方法的主干文档),collection是对Model实例所属的Backbone.Collection的引用 - 通过将其数据(例如模型的示例json表示形式)添加到集合来创建模型时自动创建的引用。它允许集合和模型之间的分层通信,并且还可以轻松地监听只能访问模型的集合上的事件(例如,在项目视图中)

让它看起来很奇怪的是它将contextcollection显示为未定义值的数组 - 我不知道您使用的是什么版本的主干和什么环境但是如果它是正确的应显示Backbone.Collection实例或引用,您可以进一步扩展和检查(假设您使用的是浏览器JS控制台)。我敢打赌,你的print方法可能会做一些奇怪的事情,将集合引用转换为这些数组。