【发布时间】:2012-03-10 10:16:01
【问题描述】:
我有一个路由器访问它的集合。我的 for 循环没有遍历模型,所以我尝试记录集合以查看它返回的内容。结果当我直接记录集合时,我按预期看到了所有模型。但是,如果我尝试记录集合的模型属性,我会得到一个空数组!这没有意义。这些线直接相互跟随。我尝试更改顺序并得到相同的结果。
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
【问题讨论】:
-
在您登录时获取是否完成并成功重置或将模型添加到集合中?
-
我只能假设它确实如此,两个日志彼此紧随其后,这两个调用之间只有纳秒的问题。虽然仍然有可能,但如果您对其进行多次测试,它至少应该是一个不稳定的结果......它不能总是在这两个日志调用之间完成加载。
-
我不明白它为什么会记录,但我发现我需要在视图中的集合上添加一个事件侦听器以确保它已加载。
标签: javascript model-view-controller backbone.js coffeescript