Can I use Collection.get(id) to find a model within a Backbone.js collection by cid, for a model not yet saved to the server?
From the documentation, it seems like .get should find a model by either its id or cid. However, collection.get(cid)
doesn't find the model, whereas this does, collection.find(function(model) {return model.cid===cid; })
. Presumably I'm overlooking something basic.
jsFiddle for example below
var Element = Backbone.Model.extend({});
var Elements = Backbone.Collection.extend({ model: Element });
var elements = new Elements(), el, cids = [];
for (var i=0; i<4; i++) {
el = new Element({name: "element"+i})
elements.add(el);
cids.push(el.cid);
}
console.log(cids);
el1 = elements.get(cids[0]);
console.log(el1); // undefined
el1a = elements.find(function(model) { return model.cid === cids[0]; });
console.log(el1a); // success
Backbone.js - id vs idAttribute vs cid
js Get model is used to get the value of an attribute on a model. Syntax: model. get(attribute)
Collections are ordered sets of Models. We just need to extend the backbone's collection class to create our own collection. Any event that is triggered on a model in a collection will also be triggered on the collection directly.
BackboneJS allows developing of applications and the frontend in a much easier way by using JavaScript functions. BackboneJS provides various building blocks such as models, views, events, routers and collections for assembling the client side web applications.
Backbone. js is a model view controller (MVC) Web application framework that provides structure to JavaScript-heavy applications. This is done by supplying models with custom events and key-value binding, views using declarative event handling and collections with a rich application programming interface (API).
In backbone 0.9.9 (see changelog), they removed the .getByCid()
method and folded that functionality directly into .get()
-- if you're using below 0.9.9, you can use the .getByCid()
method; I think they've since removed it from the docs to reflect the most current state of the library.
Edit:
See @Ferdinand Prantl's comment below for more detail, but passing the cid
as the property of an object literal will accomplish what you're looking for here: .get({ cid: "xxx" })
. My apologies for any confusion.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With