52 votes

Tri d'une collection de dorsale après l'initialisation

J'utilise Backbone.js pour afficher une liste d'éléments, par exemple des livres. Une fois la liste rendue, l’utilisateur a la possibilité de les trier. Ainsi, si l’utilisateur clique sur Trier par titre ou Trier par nom d’auteur, la liste se triera du côté client.

   window.Book = Backbone.Model.extend({
   defaults: {
     title: "This is the title",
     author: "Name here"
   },
 

Quel est le meilleur moyen de réaliser ce tri à l'aide d'une application Backbone? Est-ce que j'utilise un classeur jQuery dom dans AppView?

50voto

satchmorun Points 7504

Il y a une discussion sur ce sujet que vous pouvez consulter: https://github.com/documentcloud/backbone/issues/41.

Le court, c'est que quand un utilisateur sélectionne "trier par X', vous pouvez:

  1. Définir l' comparator de la fonction sur la Collection
  2. Appel de la Collection, sort de la fonction (qui déclenche l' reset événement
  3. Pour écouter la reset événement dans votre Vue, et (et clair) redéfinir les éléments

Un autre moyen de gérer les étapes 1 et 2 est d'avoir votre propre méthode qui appelle de la Collection, sortBy méthode, puis déclenche un événement personnalisé que votre Vue peut écouter.

Mais il semble être le cas, la compensation et le retraçage est la méthode la plus simple (et peut-être même le plus rapide) pour trier votre point de Vue et de les synchroniser avec votre Collection de tri de la.

48voto

jpanganiban Points 548

Vous pouvez mettre à jour la fonction de comparaison, puis appeler la méthode de tri.

 // update comparator function
collection.comparator = function(model) {
    return model.get('name');
}

// call the sort method
collection.sort();
 

La vue sera automatiquement rendue à nouveau.

12voto

Nick Vanderbilt Points 464

comparator est ce dont vous avez besoin

 var PhotoCollection = Backbone.Collection.extend({
    model: Photo,
    comparator: function(item) {
        return item.get('pid');
    }
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X