我使用的骨干,我有一个集合全的7款车型。
我想抓住一个模型,并从集合拉出。 然而,一切我尝试回报undefined
。
下面是我如何填充集合
var coll = new TestCollection();
coll.fetch();
一个简单的控制台日志调用显示该集合从JSON文件填充
child
_byCid: Object
_byId: Object
_onModelEvent: function () { [native code] }
_removeReference: function () { [native code] }
length: 7
models: Array[7]
__proto__: ctor
不过,我已经尝试了一大堆的方式,以抓住从收集这些模型包括一个coll.at(1)
和coll.get(1)
但每个回报undefined
。
有没有人有什么想法?
该fetch
方法是AJAX调用,这意味着,它是异步的。 你console.log
呼吁把一个生动的引用到控制台(所以它是有点异步的),所以你最终事件的顺序:
- 你叫
coll.fetch()
- 骨干发射一个
$.ajax
调用。 - 你叫
console.log(coll)
和现场引用云在控制台中。 - 你叫
coll.at(1)
或coll.get(1)
和什么也得不到,因为2还没有从服务器返回呢。 - 2从服务器回来,并填充您的收藏。
- 然后你去看看控制台,但
coll
已经被现在居住所以coll
在控制台参考包括回来在5模型。 - 混乱。
成功fetch
触发"reset"
事件,这样你应该听,如果你想知道的集合被填充时,该事件:
coll.on('reset', this.some_method);
或者,对于一次性的通知,您可以使用success
的回调:
coll.fetch({
success: function(collection, response) {
//...
}
});
在骨干网的新版本,你需要通过reset: true
选项来fetch
,如果你想有一个复位事件:
coll.fetch({ reset: true }); // This will now trigger a 'reset' event