Backbone - 将New属性设置为false的bootstrap数据

时间:2012-07-11 15:29:49

标签: backbone.js bootstrapping

我正在使用骨干并根据实践引导一些数据(http://documentcloud.github.com/backbone/#FAQ-bootstrap)。

但是,现在当我保存任何自举模型时,Backbone会将模型视为服务器上不存在的模型(model.isNew === true,http://backbonejs.org/#Model-isNew),后者又使用方法调用Backbone.sync创建'而不是'更新'。因此,调用POST而不是PUT HTTP方法。

如何将isNew设置为false的自举模型,即骨干网将它们视为服务器上存在?

2 个答案:

答案 0 :(得分:2)

显然,model.isNew取决于是否按照此处的说明设置了id:http://backbonejs.org/#Model-isNew。这意味着使用id set引导数据可以解决我的问题

答案 1 :(得分:0)

我最近遇到了这个问题,我通过覆盖我的Backbone模型中的parse(),initialize()和isNew()函数来克服。

initialize()函数将'loadedFromServer'属性初始化为false。

    initialize: function () {
        this.loadedFromServer = false;
    },

parse()函数将'loadedFromServer'属性设置为true并返回响应:

    parse: function (response) {
        this.loadedFromServer = true;
        return response;
    },

isNew()函数然后检查id(对于空白模型)或者是否已设置id,但是没有同步到服务器:

    isNew: function () {
        return !this.id || !this.loadedFromServer;
    }

这满足以下测试:

isNew()在获取时报告为false 当没有设置id时,isNew()报告为true 当一个id被设置(对于PUT)但是从未被提取时,isNew()报告为真