我有一个问题,真的很难注意到,因为在大多数情况下一切正常。只有当我试图在我的集合初始化函数中操作我的数据时,我才发现了一个问题。
http://backbonejs.org/#Collection-constructor上的主干文档
“如果你定义了一个初始化函数,它将在集合创建时被调用。”
所以我将其解释为,我的初始化函数要等到模型设置好后才会运行。“这听起来很理想,”我说,但后来我遇到了这个问题。
我的引导代码如下:
new MyCollection(<?php if ($data) {echo json_encode($data);} ?>);
我的收藏:
var MyCollection = Backbone.Collection.extend({
model: MyModel,
initialize: function() {
console.log(this);
console.log(this.length);
this.each(function(model) {
console.log(model);
});
}
});
我得到了奇怪的结果。
第一个console.log(this);
是预期的集合对象:
{
....
models: [3],
length: 3
....
}
第二个console(this.length);
打印出数字0
里面的控制台this.each()
没有出现。
发生了什么?