2011-06-22 44 views
6

我正在嘗試學習backbone.js,並且我無法理解如何綁定模型並在獲取後讀取它們。 這是我的代碼:Backbone.js使用ajax獲取綁定集合到模型

$(function() { 
    var Bid = Backbone.Model.extend(); 

    var BidsList = Backbone.Collection.extend({ 
     model: Bid, 
     url: '/buyers/auction/latestBids?auctionId=26&latestBidId=0', 
    });   

    var BidsView = Backbone.View.extend({ 
     el: $('#bids'), 
     initialize: function() { 
      log('hi'); 
      _.bindAll(this, 'render'); 

      this.collection = new BidsList();     

      this.collection.fetch(); 
      this.render(); 
     }, 
     render: function() {      
      log(this.collection); 

      return this; 
     },    
    }); 

    var bidsView = new BidsView(); 

}); 

function log(m) { console.log(m); } 

這是Web服務的JSON的樣子

{ 
    "AuctionState":3, 
    "ClosedOn":null,  
    "Bids":[ 
     { 
      "BidId":132,    
      "AuctionId":26  
     }, 
     { 
      "BidId":131, 
      "AuctionId":2   
     } 
    ] 
} 

如何將我那綁定響應模型?

回答

9

您需要重寫BidCollection上的parse()方法以將外標拉出並僅將它們呈現給集合的add()例程。您可以使用parse()方法來管理AuctionState字段。

您還需要在視圖中偵聽「更改」事件,以便視圖在提取後自動更新。你不需要在視圖中調用render();您應該將模型的「更改」事件綁定到render(),然後獲取數據並讓它觸發渲染。

一如既往,Backbone的源代碼具有高度的可讀性。我建議學習和理解它。

例如:

var BidsList = Backbone.Collection.extend({ 
    model: Bid, 
    url: '/buyers/auction/latestBids?auctionId=26&latestBidId=0', 
    parse: function(response){ 
     return response.Bids; 
    } 
}); 
+1

實施例的代碼將是很好的。 – Jason

相關問題