我在Backbone.JS中遇到以下错误,
未捕获的TypeError:无法调用未定义的方法' toJSON '。
以下是模型和视图的代码,
<script src="js/underscore.js"></script>
<script src="js/jquery-1.6.2.min.js"></script>
<script src="js/backbone.js"></script>
var Person = Backbone.Model.extend({
defaults:{
name:"niran",
age:20
},
validate:function(attr){
if(attr.age <0){
return "should be greater than 0";
}
}
}
)
var PhotoSearch = Backbone.View.extend({
tagName:"li",
initialize:function(){
console.log(this.model)
this.render();
},
template:_.template("<%= name %>(<%= age %>"),
render:function(){
this.$el.html(this.template(this.model.toJSON()));
}
});
var p = new Person();
var ps = new PhotoSearch({model:p});
关于这个的任何想法
全部谢谢
答案 0 :(得分:1)
根据Backbone.js文档(http://backbonejs.org/),您需要json2.js。
答案 1 :(得分:1)
试试这个:
var PhotoSearch = Backbone.View.extend({
tagName:"li",
initialize:function(){
_.bindAll(this, "render");
console.log(this.model)
this.render();
},
template:_.template("<%= name %>(<%= age %>"),
render:function(){
this.$el.html(this.template(this.model.toJSON()));
}
});
您错过了对_.bindAll(this, "render");
的调用。如果没有此调用,this
将不会设置为视图的上下文,这意味着.model
将是未定义的。
您还可以使用_.bindAll(this);
绑定所有方法。