[英]For Loop over Backbone Collection
骨干相當新,所以這是一個非常基本的問題。 我有一個Backbone集合傳遞給一個函數,我可以證明它已經通過,並且集合中的模型有id。
這是我如何設置ID -
convertToMapObjects: (results) =>
objectList = new ObjectList()
results.each(result)->
testObj = new TestObject()
testObj.set
id = result.get("id")
objectList.add(testObj)
在另一個函數中(通過使模型觸發事件來訪問) -
getIds: (objects) =>
ids = (object.id for object in objects)
我認為問題可能是因為我正在迭代這個集合,因為當我嘗試的時候
for object in objects
console.log(object)
我看到兩個未定義的。 它是否正確? 如果是這樣,為什么我不能使用for循環來通過骨干集合? 還有,我有辦法嗎?
Backbone集合不是一個數組,所以for ... in
將不會產生你期望的結果。 如果要使用簡單循環,則需要查看集合的models
屬性。
但是,Backbone集合中混合了各種Underscore方法 :
下划線方法(28)
Backbone代理Underscore.js,在Backbone.Collection上提供28個迭代函數。 它們並未全部記錄在案,但您可以查看Underscore文檔以獲取完整的詳細信息......
- forEach(每個)
- ...
因此,如果您想避免訪問models
屬性,可以使用map
或pluck
:
ids = objects.map (m) -> m.id
ids = objects.pluck 'id'
pluck
方法或多或少只是map
一個特例,但集合實現了本機版本而不是使用Underscore版本,因此它們可以采用模型屬性而不是簡單的對象屬性。
您希望遍歷集合的models
屬性 ,而不是集合對象本身。
for object in object.models
這將為您提供集合中的模型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.