Comment faire pour trouver un modèle de collection en fonction de certains attributs autres que la carte d'identité?
J'ai un modèle avec plusieurs objet:
//Model
Friend = Backbone.Model.extend({
//Create a model to hold friend attribute
name: null,
});
//objects
var f1 = new Friend({ name: "Lee" });
var f2 = new Friend({ name: "David"});
var f3 = new Friend({ name: "Lynn"});
et aussi, je vais ajouter ces amis de l'objet à une collection:
//Collection
Friends = Backbone.Collection.extend({
model: Friend,
});
Friends.add(f1);
Friends.add(f2);
Friends.add(f3);
et maintenant je veux obtenir un modèle selon le nom de l'Ami. Je sais que je peux ajouter un ID
attribut pour atteindre cet objectif. Mais je pense qu'il devrait y avoir plus simple façon de le faire.
Vous devez vous connecter pour publier un commentaire.
Épine dorsale des collections de l'appui de la underscorejs
find
méthode, donc, en utilisant cela devrait fonctionner.findWhere
fonction: stackoverflow.com/a/39246440/4769218Pour un simple attribut à partir de recherches, vous pouvez utiliser
Collection#où
:Donc si
friends
est votreFriends
instance, puis:Il y a aussi
Collection#findWhere
(un ajout ultérieur, comme indiqué dans les commentaires):donc, si vous êtes seulement après un, alors vous pouvez dire des choses comme:
friends.findWhere({name: "Lee"})
devrait vous obtenez seulement le premier modèle de la collection qui correspond (ainsi efficacement l'épargne vous un[0]
), je soupçonne cependant qu'il nécessite de la Dorsale >1.0.0findWhere
fonction: stackoverflow.com/a/39246440/4769218La façon la plus simple est d'utiliser "idAttribute" l'option de la Dorsale Modèle de laisser épine Dorsale savez ce que vous voulez utiliser le "nom" de votre Id de Modèle.
Maintenant, vous pouvez utiliser directement de la Collection.méthode get() pour récupérer un ami à l'aide de son nom. De cette façon, épine Dorsale de ne pas parcourir l'ensemble de votre Ami modèles de la Collection, mais peut directement aller chercher un modèle basé sur son "nom".
Vous pouvez appeler
findWhere()
sur l'épine Dorsale des collections, qui sera de retour exactement le modèle que vous recherchez.Exemple: