Tengo una lista de tareas pendientes con nombre y fecha. Me gustaría poder ordenar la lista usando el título o la fecha. ¿Cómo haría esto? El comparador permite solo un tipo de clasificación.Colección Backbone.js con varios tipos
Gracias.
Tengo una lista de tareas pendientes con nombre y fecha. Me gustaría poder ordenar la lista usando el título o la fecha. ¿Cómo haría esto? El comparador permite solo un tipo de clasificación.Colección Backbone.js con varios tipos
Gracias.
Creo que he encontrado un método:
collection.reset(collection.sortBy(function(item){
return item.get(sortingFIeld);
}))
Dónde sortBy devuelve una nueva matriz, ordenados que se pasa como argumento para restablecer. SortingField es la propiedad de cadena del modelo.
Dijo específicamente que no quiere utilizar el restablecimiento. Y ahora lo corrigió: P No es tu culpa. –
Yo soy yo, aunque lol. Lo edité porque, por el momento, esa es la solución en la que puedo pensar. – chenglou
¿Puedes expandir tu respuesta? Estoy tratando con lo mismo y me pregunto dónde especificará qué atributo (título o fecha) ordenar. – CamelBlues
Es posible que tenga que mirar the answer here, aquí está la solución aportada en ese puesto:
comparator: function(item) {
return [item.get("level"), item.get("title")]
}
Es posible aplicar de forma más lógica en el comparador, para que pueda abstraer parte de la lógica de clasificación:
var Collection = Backbone.Collection.extend({
model: myModel,
order: 'name'
comparator: function(model) {
if (this.order === 'name') {
return model.get('name');
} else {
return model.get('date'); //or modify date into a numeric value
}
}
});
a continuación, cambiar la forma en que desea que ordenan:
myCollection.order = 'date';
myCollection.sort();
Esto llamará a la función del comparador y lo ordenará de esta manera.
Puede escuchar la reordenación en una vista:
this.listenTo(myCollection,'sort',this.render);
Esto debido a que el tiene la ventaja añadida de que cada vez que se añade un modelo, que llama el comparador y la ordena utilizando cualquiera que sea su configuración actual es, el método de clasificación se almacena en la colección.
+1 para esta respuesta. Las opciones son cómo pasar información entre su aplicación que necesitan las funciones. – Throttlehead
¿Puedo preguntar por qué no desea restablecer la colección? Hay desencadenadores de restablecimiento (para las vistas) por esta razón exacta. es decir, cuando su clasificación cambia a través de un restablecimiento, su vista se vuelve a renderizar. –
Tiene razón, no veo ninguna desventaja al restablecer toda la colección. Gracias. – chenglou
Es normal restablecer una colección cuando cambian los datos, en su caso toda la colección, aunque son los mismos datos pero en orden diferente –