andresmijares
andresmijares

Reputation: 3744

Backbone, getting parameters others than data in collection

Given the following json:

 { 
   "admin": false,
   "data": [
     {
      value: key, 
      value :key
     },
     {
      value: key, 
      value :key
     }
    ]
 }

I defined my collection like this:

 var myCollection = Backbone.Collections.extend({
     url: myurl.com,
     parse : function (response) {
        return response.data;
     }
 }); 

It works like charm, it fill my collection with the data array, however, into the tamplate, I need to render some content when admin is equal true. But I cannot find a way to pass that value to the template.

Any chance any of u kind guys can point it into the right direction to solve this?

Upvotes: 1

Views: 32

Answers (1)

Daniel J.G.
Daniel J.G.

Reputation: 34992

You could save the admin flag as a property of the collection in the parse method:

var myCollection = Backbone.Collection.extend({
    model: myModel,
    isAdmin: false,
    ...
    parse : function (response) {
        this.isAdmin = response.admin; //save admin flag from response
        return response.data;
    }
});

Then you could retrieve it and pass it to your template or use it in any other way in the view render method:

var myView = Backbone.View.extend({    
    collection: new myCollection(),
    ...
    render: function(){
        //retrieve admin flag from collection:
        var isAdmin = this.collection.isAdmin;

        //you could add it into the json you pass to the template
        //or do anything else with the flag

    }                               
});

You can try this fiddle with a very basic render function.

Upvotes: 2

Related Questions