-1

我有一个设置默认值的模型,如下所示:

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 默认值,而不是模型中分配的值。关于为什么会发生这种情况的任何想法?

4

1 回答 1

3

Model#save是异步的,当你在做:

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

服务器还没有响应,所以CountActiveAndPending从来没有被调用过,active仍然是-1。尝试在success回调中记录其值。

于 2013-06-30T12:56:19.467 回答