2012-12-23 120 views
0

我想渲染一個簡單的集合視圖,並有一個奇怪的問題。Backbone Collection無法找到模型的視圖渲染

問題是,當我嘗試在集合的視圖中調用模型的渲染方法時,它找不到渲染方法。

我的模型和視圖

var PersonModel = Backbone.Model.extend({}); 

var PersonView = Backbone.View.extend({ 
tagName : "person", 
events:{ 
    "click h3":"alertStatus" 

}, 
initialize:function(){ 
    this.model.on('change',this.render,this); 

} , 
render:function(){ 

    var underscore_template = _.template('<h3>Name : <%= name %></h3>'+ 
     '<h3>Last Name : <%= surname %></h3>' + 
     '<h3>Email : <%= email %> </h3>') ; 

    console.log("Person View Render Oldu"); 
    this.$el.html(underscore_template(this.model.toJSON())); 

}, 
alertStatus :function(e){ 
    alert("Clicked on Model View"); 
} 
}); 

我的收藏而收藏查看

var PersonList = Backbone.Collection.extend({ 
model:PersonModel, 
url:'/models' 
}); 

var personList = new PersonList(); 

var PersonListView = Backbone.View.extend({ 
tagName : "personlist", 
render : function(){ 
    this.collection.forEach(this.addOne,this); 
}, 
addOne : function(personItem){ 
    var personView = new PersonView({model:personItem}); 
    this.$el.append(personView.render().el); // The call to personView.render throws undefined 
}, 
initialize : function(){ 
    this.collection.on('add',this.addOne,this); 
    this.collection.on('reset',this.addAll,this); 
}, 
addAll : function(){ 
    this.collection.forEach(this.addOne,this); 
} 
}); 

var personListView = new PersonListView({ 
collection:personList 
}); 


personList.fetch({ 
success:function(){ 
    console.log("Fetch success"); 
} 
}); 

我打電話這個JS文件上準備與jQuery和它的ID命名的應用程序添加到一個div。

我取也successful.The在集合視圖的addOne函數試圖調用personView.render()。埃爾

任何幫助,將不勝感激,當問題仍然存在。

回答

1

你忘了返回元素渲染:

render : function() { 

    var underscore_template = _.template('<h3>Name : <%= name %></h3>'+ 
     '<h3>Last Name : <%= surname %></h3>' + 
     '<h3>Email : <%= email %> </h3>') ; 

    console.log("Person View Render Oldu"); 
    this.$el.html(underscore_template(this.model.toJSON())); 

    return this; // chaining 
} 

,否則你不能IT連鎖,你不能訪問el之後。

+0

明白了:)謝謝朋友。 –

相關問題