2

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

但是,现在当我保存任何自举模型时,Backbone 会将模型视为服务器上不存在的模型(model.isNew === true,http ://backbonejs.org/#Model-isNew ),这反过来又调用 Backbone。与方法“create”而不是“update”同步。因此,调用的是 POST 而不是 PUT HTTP 方法。

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

4

2 回答 2

2

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

于 2012-07-11T15:39:30.493 回答
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() 获取时报告错误 isNew() 未设置 id 时报告 true isNew() 设置 id 时报告 true(用于 PUT),但从未获取

于 2013-03-06T14:53:28.227 回答