2013-09-23 52 views
0

我是一個Backbone.js新手,我只是在玩它。我想知道使用urlRoot時模型如何與View相關。我正在使用本地的寧靜服務。當調用「API /飼料/ 57」我得到以下JSON結果:Backbone.js,使用urlRoot結果在視圖中

{"id":"57","name":"Speakers","name_desc":null,"url":"http:\/\/speakers.com\/feed\/","category":"1","favicon":"http:\/\/g.etfv.co\/http%3A%2F%2Fspeakers.com%2F","last_update":"2013-09-20 12:57:25","insert_date":"0000-00-00 00:00:00"} 

已檢索的值由視圖中顯示我想才達到的。當試圖這樣做時,將顯示默認值,而不是從urlRoot中檢索的值。我使用了console.log(name)來驗證json服務是否正常工作。似乎是這樣,因爲「揚聲器」顯示在調試中。任何想法我做錯了什麼?下面的代碼被用於:

var Feed = Backbone.Model.extend({ 
    urlRoot: 'api/feed', 
    defaults: { 
     name: 'Test', 
     name_desc: 'Test', 
     url: '' 
     } 
}); 

var feedItem = new Feed({id: 57}); 

feedItem.fetch({ 
    success: function (feedItem) { 
     var name = feedItem.get('name'); 
     console.log(name); 
    } 
}) 

var FeedView = Backbone.View.extend({ 
    tagName: 'li', 

    initialize: function(){ 
    this.render(); 
    }, 

    render: function(){ 
    this.$el.html(this.model.get('name')); 
    } 
}); 

var FeedView = new FeedView({ model: feedItem }); 
FeedView.el; 
$(document.body).html(FeedView.el); 
+0

把這個「this.model.on('change',this.render,this);」在旅遊視圖初始化 – jrsalunga

回答

0

首先,你要重寫你瀏覽,選擇一個不同的名稱來存儲實例,

var feedView = new FeedView({ model: feedItem }); 
feedView.render(); 
$(document.body).html(feedView.el); 

其次,fetch是一個異步調用,所以你需要等待因爲它在渲染之前完成,所以當你的模型改變時,你的渲染函數將被調用,並用正確的值更新視圖。

+0

謝謝,它正在按預期工作! – Erhnam