sorte d'épine dorsale de la collection basée sur les attributs de modèle
J'ai une épine dorsale de la collection qui est rendu dans un tableau. Je voudrais faire le tableau triable se basant sur certains attributs de la collection, comme "task_status","task_group". J'ai de la lecture l'épine dorsale de la documentation à propos de la collecte.comparateur,nd de la collection.de tri.
Comment puis-je obtenir ce fait?
OriginalL'auteur MrFoh | 2012-07-16
Vous devez vous connecter pour publier un commentaire.
La
comparateur
fonction est utilisée pour comparer deux modèles dans la collection et il peut les comparer en toute (conforme) de la façon qu'elle veut. En particulier, il peut choisir le modèle qui attribut à utiliser de sorte que vous pourriez avoir quelque chose comme ceci dans votre collection:et ensuite, vous avez juste besoin de quelques méthodes sur la collection de changer la
sort_key
et appelsort
:Dans les anciennes Dorsales, appelant
sort
sera le déclencheur d'une"reset"
événement tandis que les versions plus récentes de déclencher une"sort"
événement. Pour couvrir les deux cas, vous pouvez écouter à la fois les événements et les rendre à nouveau:Démo: http://jsfiddle.net/ambiguous/7y9CC/
Vous pouvez également utiliser
listenTo
au lieu deon
pour vous aider à éviter les zombies:Démo: http://jsfiddle.net/ambiguous/nG6EJ/
Oui,
>
et<
travail sur les cordes, les
attribut dans la démo est une chaîne de caractères.Remarque: cet exemple ne fonctionne plus parce que la Dorsale ne tire plus l'événement de réinitialisation sur le tri. Il tire le genre d'événement.
Merci pour le heads up, j'ai mis à jour les choses de compte pour des versions plus récentes de la colonne vertébrale.
sauvé beaucoup de travail... merci @mu est trop court
OriginalL'auteur mu is too short
@mu-est-trop-courte réponse est bonne, sauf qu'il ya un moyen plus facile de comparer les valeurs de champ:
La façon la plus simple pour trier la collection basée sur un champ, est de fournir un comparateur de fonction qui renvoie l'exacte valeur du champ que vous souhaitez trier. Ce type de comparateur causes de colonne vertébrale, à l'appel
sortBy
fonction, au lieu d'sort
, qui n'a dès lors que le complexe de comparaison sur son propre et vous n'avez pas à vous soucier de la logique.Donc, en substance, vous n'avez pas à fournir un complexe comparateur de fonction, sauf si vous avez une version plus avancée du besoin pour la détermination de l'ordre.
Après, vous pouvez simplement appeler la collection
sortByField
-fonction avec une chaîne de caractères qui représente la clé que vous souhaitez trier.Par exemple:
Modifié @mon-est-trop-courte démo de: http://jsfiddle.net/NTez2/39/
Merci pour le heads up! J'ai mis à jour la par exemple tenir compte de ce changement: jsfiddle.net/NTez2/39
Le gros problème avec le seul argument de comparaison (et
_.sortBy
), c'est que vous ne pouvez pas basculer entre ascendant et descendant de la commande sur une chaîne de caractères dans tous les sane de la mode. Descendant sur les nombres est facile comme vous pouvez le nier nombre, mais en niant une chaîne de caractères n'est pas si facile. Vous aussi vous ne pouvez pas trier par plusieurs touches sans brassage dans une chaîne unique et qui prend soin de bien le comprendre.OriginalL'auteur jylauril
@jylauril de réponse aide énormément, mais nécessaires pour modifier la démo (peut-être de légers changements dans épine dorsale, car il a été posté?)
Ressemble vous avez besoin de déclencher un rendu après que vous avez réglé.
Mise à jour @mon-est-trop-courte démo de: http://jsfiddle.net/NTez2/13/
OriginalL'auteur Erik