我正在使用骨干并根据实践引导一些数据(http://documentcloud.github.com/backbone/#FAQ-bootstrap)。
但是,现在当我保存任何自举模型时,Backbone会将模型视为服务器上不存在的模型(model.isNew === true,http://backbonejs.org/#Model-isNew),后者又使用方法调用Backbone.sync创建'而不是'更新'。因此,调用POST而不是PUT HTTP方法。
如何将isNew设置为false的自举模型,即骨干网将它们视为服务器上存在?
答案 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()报告为真