2013-01-16 165 views
1

我与backbone.js非常基本的水平,我想添加几个元素到身体,因为这是使用这个函数,但我得到的错误为“Uncaught ReferenceError:age is未定义“ - 我的代码有什么问题?Backbone.js - 抛出错误

错误我得到:

"Uncaught ReferenceError: age is not defined" 

HTML(模板):

<script id="person" type="text/template"> 
    <strong><%= name %></strong><sup><%= age %></sup> 
</script> 

功能:

(function($){ 

var Model = Backbone.Model.extend({ 
    defaults:{ 
     name:'default name', 
     age:'default age' 
    } 
}); 

var Col = Backbone.Collection.extend({ 
    model:Model  
}); 

var PersonView = Backbone.View.extend({ 
    tagName:'li', 
    template:_.template($('#person').html()), 
    initialize:function(){ 
     this.render(); 
    }, 
    render:function(){ 
     $('body').append(this.$el.html(this.template(this.model.toJSON()))); 
    } 
}); 

var ncol = new Col({model:[{name:'abc',age:1},{name:'cdf',age:2},{name:'ghi',age:1}]}); 

var persons = new PersonView({model:ncol}); 

})(jQuery) 

任何一个可以帮助我与我的问题排序..?

+0

你能提供一个工作jsfiddle吗? –

回答

3

您错误地初始化您的收藏。构造函数期望初始模型作为一个数组,而不是一个对象。因此,而不是:

new Col({model:[ 
    {name:'abc',age:1}, 
    {name:'cdf',age:2}, 
    {name:'ghi',age:1} 
]}); 

它应该是:

new Col([ 
    {name:'abc',age:1}, 
    {name:'cdf',age:2}, 
    {name:'ghi',age:1} 
]); 

这可能是也可能不是你的原因特定错误,但至少这会导致一些严重的破坏。