Fairly new to backbone, so this is a really basic question. I have a Backbone collection passed into a function and I can prove that it has been passed and that the models in the collection have ids.
Here’s how I’m setting the ids –
convertToMapObjects: (results) =>
objectList = new ObjectList()
results.each(result)->
testObj = new TestObject()
testObj.set
id = result.get("id")
objectList.add(testObj)
And in another function ( accessed through making the model trigger an event) –
getIds: (objects) =>
ids = (object.id for object in objects)
I think the issue may be because of how I’m iterating through the collection because when I tried doing
for object in objects
console.log(object)
I saw two undefineds. Is this correct? If so, why can’t I use a for loop to go through a backbone collection? Also, is there a way I could do so?
A Backbone collection is not an array so
for ... inwon’t produce the results you’re expecting. You want to look at the collection’smodelsproperty if you want to use a simple loop.However, Backbone collections have various Underscore methods mixed in:
So you can use
maporpluckif you’d like to avoid accessing themodelsproperty:The
pluckmethod is, more or less, just a special case ofmapbut collections implement a native version rather than using the Underscore version so that they can pluck model attributes rather than simple object properties.