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?
Disculpe la respuesta breve (no tiene tiempo para responder), pero observe la definición de una función de comparación.
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 elindex
especificado.
Ejemplo:
Pages.add({ foo: bar }, { at: Pages.length - 2 })