我正在使用Backbone,并且我有一个完整的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。
有谁有什么想法吗?
发布于 2012-07-19 03:45:53
fetch方法是一个AJAX调用,这意味着它是异步的。您的console.log调用将一个活动引用放入控制台(因此它是一种异步的),因此您将得到以下事件序列:
您调用coll.fetch().
$.ajax调用。您调用console.log(coll)的coll.at(1)或coll.get(1)时什么也得不到。从服务器返回并填充您的yet.coll引用已填充包括在5.中返回的模型
成功的fetch会触发"reset"事件,因此如果您想知道何时填充集合,则应该侦听该事件:
coll.on('reset', this.some_method);或者,对于一次性通知,您可以使用success回调:
coll.fetch({
success: function(collection, response) {
//...
}
});在较新版本的Backbone中,如果需要重置事件,则需要将reset: true选项传递给fetch:
coll.fetch({ reset: true }); // This will now trigger a 'reset' eventhttps://stackoverflow.com/questions/11548222
复制相似问题