2012-07-11 30 views
2

我正在使用backbone并根据实践引导一些数据(http://documentcloud.github.com/backbone/#FAQ-bootstrap)。主干 - 使用isNew属性设置为false的自举数据

但是,现在,当我保存任何引导模型时,Backbone将该模型视为服务器上不存在的模型(model.isNew === true,http://backbonejs.org/#Model-isNew),而该方法反过来使用方法'create'调用Backbone.sync '更新'。因此,调用POST而不是PUT HTTP方法。

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

回答

0

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

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

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

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

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

的是否新款()函数然后检查ID(对于空白型号)或者是否ID已定,但不是同步到服务器:

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

这满足以下测试:

是否新款()报告错误时,如果没有标识已设置 当ID已经(为PUT)设置是否新款()报告真实的,但从来没有获取

+1

在反射牵强 是否新款()报道属实,这是潜在的因为在model.save()中使用isNew()函数来决定是POST还是PUT,所以不明智。 – bazwilliams 2013-03-06 15:19:52

相关问题