underscore source examples backbonejs backbone annotated javascript jquery backbone.js

javascript - source - underscore js download



¿Cómo inserto un modelo en una colección backbone.js en un índice específico? (3)

Necesito insertar un modelo en una Colección en la posición Colección.longitud-2. El último modelo de la colección siempre debe ser el último modelo de la colección.

Lo que intenté hasta ahora:

Agregué un modelo de "página" a las "Páginas" de la Colección y luego intenté intercambiarlas cambiando su secuencia:

var insertedpage = Pages.at(Pages.length-1); var lastpage = Pages.at(Pages.length-2); insertedpage.set({sequence: Pages.length-1}); lastpage.set({sequence: Pages.length});

También intenté eliminar la última página, luego agregar una nueva página y luego agregar la última página nuevamente.

var lastpage = Pages.pop(); Pages.add({example1: example2}); Pages.push(lastpage);

ninguno de estos funciono La página recién agregada aún aparece como último modelo en la Colección. ¿Debo llamar a algún tipo de función de orden después de esto?


A lo largo de la misma sugerencia que Rob Hruska, use Backbone.Collection.add() con en el objeto de options .

Pages = new Backbone.Collection([ {id:1, foo:''bar''}, {id:2, foo:''barista''} /* Last model should remain last */ ]); /* Insert new "page" not at the end (default) but length minus 1 */ Pages.add({id:3, foo:''bartender''}, { at: Pages.length - 1 }); Pages.at(0).id === 1; // true Pages.at(Pages.length - 2).id === 3; // true Pages.at(Pages.length - 1).id === 2; // true

Usted mencionó que las Pages parecen estar ordenadas por la sequence atributos; ¿Tiene una función de comparator definida en la colección de Pages?

Otra pregunta, ¿desea actualizar esta sequence atributos en TODOS los modelos de página existentes actualmente en la colección cuando se agrega una nueva página a la 2ª a la última posición? ¿O fue ese atributo un intento de cumplir tu pregunta original?



Backbone.Collection.add() toma un objeto de options que admite una clave at para especificar el índice.

Pase {at: index} para unir el modelo en la colección en el index especificado.

Ejemplo:

Pages.add({ foo: bar }, { at: Pages.length - 2 })