Ben*_*awk 2 javascript collections backbone.js
我正在使用Backbone,我有一个完整的7个模型的集合.
我想抓住一个模型并将其从集合中拉出来.但是,我尝试的一切都返回undefined.
这是我填充集合的方式
var coll = new TestCollection();
coll.fetch();
Run Code Online (Sandbox Code Playgroud)
一个简单的控制台日志调用显示该集合是从JSON文件填充的
child
_byCid: Object
_byId: Object
_onModelEvent: function () { [native code] }
_removeReference: function () { [native code] }
length: 7
models: Array[7]
__proto__: ctor
Run Code Online (Sandbox Code Playgroud)
不过,我已经尝试了一大堆的办法,以便包括抢这些模型从收集coll.at(1)和coll.get(1)但每个回报undefined.
有没有人有任何想法?
该fetch方法是一个AJAX调用,这意味着它是异步的.您的console.log调用将实时引用放入控制台(因此它有点异步),因此您最终会得到以下事件序列:
coll.fetch().$.ajax呼叫.console.log(coll),实时参考进入控制台.coll.at(1)或coll.get(1)什么都没有,因为2还没有从服务器返回.coll现在已经填充,所以coll控制台中的引用包括5中返回的模型.成功fetch触发"reset"事件,因此如果您想知道何时填充集合,您应该正在监听该事件:
coll.on('reset', this.some_method);
Run Code Online (Sandbox Code Playgroud)
或者,对于一次性通知,您可以使用success回调:
coll.fetch({
success: function(collection, response) {
//...
}
});
Run Code Online (Sandbox Code Playgroud)
在较新版本的Backbone中,如果需要重置事件reset: true,fetch则需要将选项传递给:
coll.fetch({ reset: true }); // This will now trigger a 'reset' event
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |