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

10,776

Solution 1

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'))
    }
});

Solution 2

Instead of passing the model when you extend the view, you'll want to pass it when you construct a new view:

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

var obj = new person_view({
  model : new person()
});

Solution 3

Your "person_view" can not access any model (which is expected by that view) ,as no model is created yet, when you are declaring "person_view" and calling its function. First make a model then pass it to view when declaring that "person_view".

var model_person_for_view= new person();
var obj = new person_view(model:model_person_for_view);
obj.output();
Share:
10,776
Wern Ancheta
Author by

Wern Ancheta

Updated on June 27, 2022

Comments

  • Wern Ancheta
    Wern Ancheta almost 2 years

    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.