gpt4 book ai didi

javascript - 覆盖 Backbone Sync 以使用不同的调用来获取/保存/销毁

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:23 24 4
gpt4 key购买 nike

我迟到 Backbone 聚会的原因是因为我担心它不能很好地与我现有的网络服务一起使用。我什至已经到了使用自己的主干 Controller 和模型版本的地步,但只编写自己的(当然)更糟的实现是徒劳的。

我使用的是 Asp.net 网络服务,因此,假设我们正在更新用户模型,我使用以下三个调用:

myservice/deleteUser.aspx?id=1
myService/getUser.aspx?id=1
myService/setUser.aspx? //post model

我不明白这如何与 Backbone sync 一起工作?我假设我必须覆盖 fetch/savedestroy?

如果能提供一些很好的例子,我将不胜感激。我已经阅读了这个主题,包括带注释的来源,但我正在为“啊哈”的时刻而苦苦挣扎。

最佳答案

您可以为您的集合或模型提供自定义 sync 函数,当您获取/更新/销毁元素时,将调用该函数而不是 Backbone.sync。然后,您可以定制选项以发出与您的服务器设置匹配的请求。例如,

var M = Backbone.Model.extend({

sync: function(method, model, options) {
options || (options = {});

// passing options.url will override
// the default construction of the url in Backbone.sync

switch (method) {
case "read":
options.url = "/myservice/getUser.aspx?id="+model.get("id");
break;
case "delete":
options.url = "/myservice/deleteUser.aspx?id="+model.get("id");
break;
case "update":
options.url = "/myService/setUser.aspx";
break;
}

if (options.url)
return Backbone.sync(method, model, options);
}

});

var c = new M({id: 1});
c.fetch();
c.save();
c.destroy();

还有模拟这些调用的 Fiddle http://jsfiddle.net/nikoshr/4ArmM/

如果使用 PUT 和 DELETE 作为 HTTP 动词让您感到困扰,您可以通过添加 Backbone.emulateHTTP = true; 来强制执行 POST参见 http://jsfiddle.net/nikoshr/4ArmM/1/修订版。

关于javascript - 覆盖 Backbone Sync 以使用不同的调用来获取/保存/销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254778/

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