0

在打印集合中的模型时,我看到两个“未定义”列表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]
}
4

1 回答 1

3

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

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

于 2012-10-07T13:29:23.193 回答