我有一個路由器訪問其集合。我的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