2012-02-07 15 views
6

Tengo una colección Backbone. Estoy usando fetch({add:true}) para buscar nuevos elementos de mi servidor y agregarlos a la colección.¿Cómo puedo obtener el índice de un elemento agregado a una colección Backbone a través de fetch?

He vinculado una función de escucha al evento de la colección add. Me gustaría que esa función obtenga el índice en el que se agregó el elemento a la colección.

Backbone’s documentation for Collection.add dice “si usted es una devolución de llamada de escuchar el evento de una colección "add", options.index le dirá el índice al que se agrega el modelo de la colección.”

he inscrito los argumentos que parecen para pasar a mi función de oyente a la consola y echar un vistazo a ellos. Por lo que puedo decir, el primer argumento es el elemento agregado, seguido de un objeto de colección temporal creado para mantenerlo cuando volvió del servidor. No parece tener un objeto con una propiedad index.

¿Cómo puedo obtener el índice en el que se ha agregado el elemento a la colección?

Respuesta

8

Para cualquiera que lea esto en el futuro, NOTA: desde la versión 0.9.9, options.index ya no está configurado. Desde el registro de cambios:

Para mejorar el rendimiento de agregar, options.index ya no se configurará en la devolución de llamada de evento add. collection.indexOf(model) se puede usar para recuperar el índice de un modelo según sea necesario.

+0

Cosas grandiosas, gracias por agregar una respuesta actualizada. –

+0

+1 Gracias por actualizar esto. Muy útil. –

2

Comprobar el tercer argumento a la función de enlace, que debe contener la propiedad índice

var c=new Backbone.Collection(); 
c.bind("add",function(model,collection,opts){ 
    console.log(opts); 
}); 

c.add({}); 
c.add({}); 

Editar: Acabo de comprobar Backbone 0.5.3 y parecería options.index está disponible sólo en la versión 0.9

+0

Aha! Sí, por supuesto, había mirado el tercer argumento, pero asumí que era algo más, ya que el índice se estableció en cero. Había olvidado que solo había estado probando agregar un elemento a una colección vacía, por lo que obviamente el índice sería cero. Excelente, salud. –

Cuestiones relacionadas