2011-05-20 12 views
6

¿Cómo cambio el orden de clasificación de una colección principal después de que ya se haya inicializado?Backbonejs colección cambiar el orden de clasificación?

intentado esto: no funciona

collection.comparator = function() { 
     // new function 
    } 
    collectionObject.sort() 
+0

está definiendo el comparador cuando no está inicializado la colección es una opción? Por qué no? –

+0

Publique más código. ¿Cómo se definen 'collection' y' collectionObject'? – hyperslug

Respuesta

3

no creo que está definiendo el comparador correctamente. Si define un comparador, los objetos se insertarán en la colección en el orden correcto.

Aquí es un ejemplo sólo se puede ejecutar a través de Firebug en un sitio con la columna vertebral cargado:

var Chapter = Backbone.Model; 
var chapters = new Backbone.Collection; 

chapters.comparator = function(chapter) { 
    return chapter.get("page"); 
}; 

chapters.add(new Chapter({page: 9, title: "The End"})); 
chapters.add(new Chapter({page: 5, title: "The Middle"})); 
chapters.add(new Chapter({page: 1, title: "The Beginning"})); 

chapters.pluck('title'); 

# OUTPUT 
# ["The Beginning", "The Middle", "The End"] 

Aviso cómo el comparador devuelve el valor almacenado en el atributo de página de cada capítulo. La ordenación de colecciones de Backbone actúa como una ordenación por la cual usa cadenas o entradas, y no sigue un enfoque tradicional de comparación de -1,0,1.

+0

También puede establecer el comparador simplemente a un atributo con nombre, p. Ej. 'chapters.comparator = 'page'' http://backbonejs.org/#Collection-comparator – Joshua

2

Se debe trabajar si se llama a una especie en la correcta recaudación:

collection.comparator = function (item) { 
    return item.get('field'); 
}; 

collection.sort(); 
+0

No es necesario llamar al ordenar –

Cuestiones relacionadas