2012-02-27 58 views
0

從模型特定屬性我用下面的代碼取在Backbone.js的

_.each(cardIds, function(id){   
        var mdc = new MdlCard({cardId: parseInt(id)});         
        mdc.fetch({data:{cardId: parseInt(id)}}); 
        cards.reset(mdc); 
       }); 

cardIds提取數據包含CardId中的特定列表。在我的卡片視圖中

initialize: function(){   
      _.bindAll(this,'render'); 
      this.model.bind('change', this.render, this); 
      this.model.bind('destroy', this.remove, this); 
     }, 
     render: function() {    
      var res = {data: this.model.toJSON(),ccId: this.model.cid};   $(this.el).html(this.template(res));              

      chkIds = this.model.get('checklists'); 
      return this; 
     }, 

我將此卡模型傳遞給模板。但它會取兩個每一個請求對象 第一對象包含在從DB製作卡的型號和第二,當我寫這行chkIds = this.model.get('checklists');這我定義(這實際上是我想要的)

但默認值將返回什麼。請幫我找到這個代碼中的問題。

回答

2

簡而言之,fetch是異步的。所以當你首先創建模型時,它還沒有從服務器獲取所有的值。一旦完成提取,它將使用更新的值重新呈現您的視圖。我的猜測是你在創建視圖後渲染視圖。您可能會等待模型更改事件觸發(完成抓取後),並在抓取完成後呈現。

根據您發佈的內容提供的另一個建議(不一定非要看到您遇到的問題):在調用fetch時,您不必設置數據屬性。 Backbone.sync的默認實現會爲你做這麼mdc.fetch({data:{cardId: parseInt(id)}});應該mdc.fetch();

希望這是有益的 - 如果是的話請爲回答標記爲@tkone建議