I have a model with several object:
//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"});
and also, I will add these friends object to a collection:
//Collection
Friends = Backbone.Collection.extend({
model: Friend,
});
Friends.add(f1);
Friends.add(f2);
Friends.add(f3);
and now I want to get a model according to the name of the Friend. I know that I can add an ID
attribute to achieve this. But I think there should have some more simple way to do this.
For simple attribute based searches you can use Collection#where
:
where
collection.where(attributes)
Return an array of all the models in a collection that match the passed attributes. Useful for simple cases of
filter
.
So if friends
is your Friends
instance, then:
var lees = friends.where({ name: 'Lee' });
There's also Collection#findWhere
(a later addition as noted in the comments):
findWhere
collection.findWhere(attributes)
Just like where, but directly returns only the first model in the collection that matches the passed attributes.
so if you're only after one then you can say things like:
var lee = friends.findWhere({ name: 'Lee' });