我有一个路由器访问其集合。我的for循环没有遍历模型,所以我尝试记录集合以查看它返回的内容。当我直接登录集合时发现,我看到所有的模型都如预期的那样。但是如果我尝试记录集合的模型属性,我会得到一个空数组!这没有意义。这些线路直接相互关联。我尝试改变顺序并得到相同的结果。为什么backbone.js在访问模型时返回一个空数组?
console.log(this.collection);
=> Shots
_byCid: Object
_byId: Object
length: 15
models: Array[15]
__proto__: Shots
...
console.log(this.collection.models);
=> []
console.log(this.collection.length);
=> 0
为什么会发生这种情况?
下面是代码,因为它是在路由器给在那里此代码发射的一个更好的方面:
# Routers
class Draft.Routers.Shots extends Backbone.Router
routes:
'' : 'index'
'shots/:id' : 'show'
initialize: ->
@collection = new Draft.Collections.Shots()
@collection.fetch()
index: ->
console.log @collection
console.log @collection.models
抓取完成并成功重置或在您登录时向模型添加模型? – user500198 2012-02-20 01:02:35
我只能假设它是这样做的,2个日志是正确的,在这两个调用之间会是一个纳秒级的问题。仍然可能,但是如果你测试了几次,它至少应该是一个不稳定的结果......它不能总是在这两个日志调用之间完成加载。 – Sander 2012-02-20 01:37:49
我不明白为什么它正在记录,但我发现我需要在视图中的集合上添加一个事件侦听器,以确保它已加载。 – 2012-02-20 02:40:22