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();
Author by
Wern Ancheta
Updated on June 27, 2022Comments
-
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.