最近是一个骨干骨干的行为是让我在服务器上保存后重新同步模型。
您知道,您只需设置更改的型号,将其保存在后台中的服务器上,并在您的应用程序中继续您的一天。然而,备备患者耐心等待来自服务器API的响应,如果响应与当前的模型状态不对应,则它将响应属性设置回模型。
那’非常好的骨干,但如果您的回复还包含其他数据,会发生什么?你不’要在模型中设置非相关数据,以及’s a bummer.
在开始之前,我需要说我可以访问API并对它进行修改,如果您只需插入第三方API,这将更加困难。
你好解析
在骨干中非常好的一件事是,几乎没有任何交易。重新同步模型的函数是解析的,并且在型号定义中覆盖很容易。
parse : function(resp, xhr) { return resp; },
您以上所拥有的是您的服务器响应的骨干,它会检查值是否与您的模型相同,如果不是它只是将其返回到模型,以便更新它。
人们如何停下来?不是很难:
parse : function(resp, xhr) { },
现在您的模型永远不会在您的服务器响应后更新。
盘子
现在你可以’T从服务器获取任何东西,当您尝试从服务器获取集合时,并不真正有用,以此结束我们将修改API并返回一个响应的请求类型。
parse : function(resp, xhr) { if(resp.type =="read"){ return resp; } },
在那里,当您读取数据时,您将收到Untoched和Backbone应该自己处理正常过程。
好的,但身份证呢’当我创建一个新模型时
当您创建新模型并将其保存到API时,您需要数据库中的新ID可以再次编辑该模型。如果你没有那个身份证,你可以’T告诉您的API需要编辑内容。
为此,我们必须使用备份正在执行的操作类型来修改我们的解析功能。
parse : function(resp, xhr) { if(resp.type && (resp.type =="create")){ return { "id": resp.data.id } }else if(resp.type && (resp.type =="update")){ }else{ return resp; } },
正如您所看到的,如果请求类型是 “create” 我返回模型的ID。然后,我唯一的问题是 更新 将恢复对模型回复的行动。在上面的示例中,如果类型不是 更新,骨干可以正常继续。
我的服务器响应可以看出这样的东西:
{ "status":"success", "type":"update", "message":"Model as been updated in the database", "dataModel":{ "id":4, "name":"This is a model" } }
使用Parse对模型和全球
您可以始终在每个模型上定义Parse,如您的网址,但一般来说它在所有模型上都会是相同的代码,所以您可以做的一件事是扩展Backbone.js模型’s prototype.
Backbone.Model.prototype.parse = function(resp, xhr) { if(resp.type && (resp.type =="create")){ return { "id": resp.data.id } }else if(resp.type && (resp.type =="update")){ }else{ return resp; } }
你去了!