Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting attributes on a collection - backbone js

Collections in backbone js don't allow you to set attributes, but I often find that there is need to store some meta-information about a collection. Where is the best place to set that information?

like image 516
idbentley Avatar asked May 08 '11 22:05

idbentley


People also ask

How can we get the attribute value of a model in Backbone JS?

js Get model is used to get the value of an attribute on a model. Syntax: model. get(attribute)

Is Backbone JS still relevant?

Backbone. Backbone has been around for a long time, but it's still under steady and regular development. It's a good choice if you want a flexible JavaScript framework with a simple model for representing data and getting it into views.

What is collections in Backbone JS?

Advertisements. 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.


1 Answers

Just .extend the collection with a meta data storage function.

var MyCollection = Backbone.Collection.extend({     initialize: function() {         ...          this._meta = {};     },     model: ...     meta: function(prop, value) {         if (value === undefined) {             return this._meta[prop]         } else {             this._meta[prop] = value;         }     }, });  var collection = new MyCollection(); collection.add(someModels); collection.meta("someProperty", value);  ...  var value = collection.meta("someProperty"); 

There may be better places for storing specific meta data but this depends completely on what the meta data is.

For storing generic meta data extending your collection constructor with a method to do deal with that should work.

Be wary that if this meta data needs to be stored and loaded from the server then you've got a bigger task at hand.

like image 79
Raynos Avatar answered Sep 18 '22 00:09

Raynos