12

Bastante nuevo para la red troncal, por lo que esta es una pregunta realmente básica. Tengo una colección de Backbone pasada a una función y puedo probar que se ha aprobado y que los modelos de la colección tienen identificadores.Para Colección Loop over Backbone

Así es como Soy la creación de los identificadores -

convertToMapObjects: (results) => 
    objectList = new ObjectList() 
    results.each(result)-> 
    testObj = new TestObject() 
    testObj.set 
     id = result.get("id") 
    objectList.add(testObj) 

Y en otra función (se accede a través de hacer el modelo de activar un evento) -

getIds: (objects) => 
ids = (object.id for object in objects) 

Creo que el problema puede ser debido a cómo estoy iterando a través de la colección porque cuando traté de hacerlo

for object in objects 
    console.log(object) 

vi dos undefi Neds. ¿Es esto correcto? Si es así, ¿por qué no puedo usar un bucle for para ir a través de una colección de backbone? Además, ¿hay alguna manera de que yo pueda hacerlo?

Respuesta

20

Una colección de red troncal no es una matriz, por lo que for ... in no producirá los resultados que está esperando. Desea mirar la propiedad de la colección models si desea usar un bucle simple.

Sin embargo, colecciones Backbone tienen various Underscore methods mixed in:

proxies

Métodos subrayado (28)

columna vertebral de Underscore.js para proporcionar 28 funciones de iteración en Backbone.Collection. No están todos documentados aquí, pero se puede echar un vistazo a la documentación de subrayado de todos los detalles ...

  • forEach (cada uno)
  • ...

Por lo que puede utilizar map o pluck si desea evitar el acceso a la models property:

ids = objects.map (m) -> m.id 
ids = objects.pluck 'id' 

laEl métodoes, más o menos, solo un caso especial de map, pero las colecciones implementan una versión nativa en lugar de usar la versión Underscore para que puedan obtener los atributos del modelo en lugar de las propiedades simples del objeto.

+0

este respondió precisamente mi pregunta - gracias – praks5432

5

Desea recorrer el models property de la colección, no el objeto de recopilación en sí.

4
for object in object.models 

Esto le dará un modelo de la colección

Cuestiones relacionadas