gpt4 book ai didi

javascript - Backbone.js:如何处理模型和服务器响应之间的差异

转载 作者:行者123 更新时间:2023-11-30 18:34:00 25 4
gpt4 key购买 nike

我正在编写一个 Backbone 应用程序,我无法控制服务器返回的实体。

事实证明,拥有数据的内部表示形式与服务器使用的 JSON 略有不同对我来说很方便。在一个方向上,事情很简单:我可以编写一个 Model.parse() 方法,它将服务器返回的 JSON 作为输入并返回我的对象​​的属性。

我不太确定在另一个方向上该怎么做。我找不到在序列化我的对象以进行保存时调用的方法。有Model.toJSON() 但是在保存模型前好像没有用到

How am I supposed to handle this difference?

最佳答案

首先 - annotated source是查找有关 Backbone 问题的答案的最佳场所。

查看 Backbone.sync 的源代码,您可以看到模型是使用 JSON.stringify(model.toJSON()) 序列化的(假设您没有使用emulateJSON) 所以重写这个方法应该能达到你需要的效果。如果没有简化的测试用例,我无法解释为什么这对您不起作用。

更长的答案是,要完全控制服务器-客户端同步,您应该编写自己的 Backbone.sync 实现。该方法相当简单(请参阅带注释的源代码),如果您只想进行简单的更改,则可以简单地包装原始同步。

例如:

function mySyncFunction(method, model, options){
if(method == 'create' || method == 'update'){
options.contentType = 'application/json';
options.data = model.serializeForServer(); //You will need to write this method
}
return Backbone.sync(method, model, options);
}

要使用自定义同步方法,只需将其声明为模型的一部分

var myModel = Backbone.Model.extend({ 
...

"sync": mySyncFunction,

...
});

关于javascript - Backbone.js:如何处理模型和服务器响应之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8817583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com