how to access a models data from a view in backbone.js

Wern Ancheta picture Wern Ancheta · Apr 21, 2012 · Viewed 10.7k times · Source

I have a model named person:

 var person = Backbone.Model.extend({
      initialize: function(){
        console.log('cool');
      },
      defaults:{
          names:['a','k','d','s','h','t']
      }
    })

Now I have a view:

var person_view = Backbone.View.extend({
   model : person,
   output: function(){
      console.log(this.model.get('names'))
   }
});

Created an object of the view:

var obj = new person_view()

Try to access names:

obj.output()

But I got this error:

TypeError: Object function (){ parent.apply(this, arguments); } has no method 'get'

Can you show me how to do things properly?I've only just started getting to know backbone.js so please bear with me.

Answer

drinchev picture drinchev · Apr 21, 2012

You have to initialize your Model before you could access it :

var person_view = Backbone.View.extend({
    initialize: function() {
        this.model = new person();
    },
    output: function(){
        console.log(this.model.get('names'))
    }
});