2013-06-30 29 views
-1

我有這臺像默認這樣一個模型:參考VAR從一個模型到骨幹另一個回報默認

var CampModel = Backbone.Model.extend({ 
    defaults: { 
     siteID: $.jStorage.get('currentSiteID'), 
     active: -1, 
     pending: -1, 
    }, 
    url: function() { 
     //some url. 
    }, 
    sync: function (method, model, options) { 
     var method = 'read'; 

     var that = this, 
     options = options || {}; 

    options.success = function(model, response, options){ 
     if(response.errorMessage != "Session is over") 
     console.log('Update session'); 
    if(response.success) 
     if(response.returnValue.length){ 
      that.set('response', response.returnValue); 
      that.CountActiveAndPending(response.returnValue); 
     } 
     else { 
      that.set('response', []); 
     } 
     else console.log('report: bad request, error: '+ response.errorMessage); 
    } 
    Backbone.sync(method, model, options); 
}, 
    }, 
    //Counts active and pending campaigns for front page. 
    CountActiveAndPending: function (data) { 
     var active = 0; 
     var pending = 0; 
     //var it = this; 
     $.each(data, function (index, val) { 
      if (val.ApprovedOnSite) active++; 
      else pending++; 

     }); 
     this.set('active', active); 
     this.set('pending', pending); 
    } 
}); 

,並在不同的模式,我嘗試並獲得了模型參數,像這樣:

this.set({ 
      campModel: new CampModel(), 
      }) 
      }); 
      this.get('campModel').save(); 

      console.log(this.get('campModel').get('active')); 

     }, 

一切似乎運行良好,但是當我嘗試從CampModel獲得「活動」參數時,我得到-1默認值,而不是模型中分配的值。任何想法爲什麼發生這種情況?

+0

「sync」方法的完整代碼可能會有所幫助。 – Loamhoof

+0

添加了同步方法,謝謝。 – Yuval

回答

3

Model#save是異步的,當你做:

console.log(this.get('campModel').get('active')); 

服務器還沒有迴應,所以從未有人和active仍然-1。嘗試在您的success回調中記錄其值。

+0

工程就像一個魅力。謝謝! – Yuval

相關問題