Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重写主干同步以使用不同的获取/保存/销毁调用_Javascript_Backbone.js_Backbone Model - Fatal编程技术网

Javascript 重写主干同步以使用不同的获取/保存/销毁调用

Javascript 重写主干同步以使用不同的获取/保存/销毁调用,javascript,backbone.js,backbone-model,Javascript,Backbone.js,Backbone Model,我参加骨干聚会迟到的原因是我担心它不能很好地与我现有的Web服务配合使用。我甚至使用了自己版本的主干控制器和模型,但仅仅编写自己的(当然)更糟糕的实现是徒劳的 我使用的是Asp.net web服务,因此,假设我们正在更新用户模型,我将使用以下三个调用: myservice/deleteUser.aspx?id=1 myService/getUser.aspx?id=1 myService/setUser.aspx? //post model 我看不出这在主干网上是如何工作的sync?我假设我必

我参加骨干聚会迟到的原因是我担心它不能很好地与我现有的Web服务配合使用。我甚至使用了自己版本的主干控制器和模型,但仅仅编写自己的(当然)更糟糕的实现是徒劳的

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

myservice/deleteUser.aspx?id=1
myService/getUser.aspx?id=1
myService/setUser.aspx? //post model
我看不出这在主干网上是如何工作的
sync
?我假设我必须覆盖
获取
/
保存
销毁


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

您可以为您的集合或模型提供一个自定义的
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();
还有一把小提琴模拟这些叫声

如果使用PUT和DELETE作为HTTP动词让您感到困扰,您可以通过添加
Backbone.emulateHTTP=true来强制发布

有关修订版,请参阅。

好的,这是一个很大的帮助。小提琴很有用。今晚我要试一试!谢谢。还有一个问题,我如何覆盖服务域?对于整个应用程序?我猜也是在Backbone.sync中?@CrimsonChin你是说你的服务和你的应用在不同的域上?您必须对CORS请求进行调查,这也将以同步覆盖的方式进行。服务位于不同的域上。我已经安装了CORS并运行良好,只是不知道如何在backbone.js中执行同样的操作。谢谢,一旦CORS正常工作,请使用完整的url:options.url=
http://yourservice.yourapplication.com/myService/setUser...
>我使用的是restful web服务…
deleteUser.aspx
..
getUser.aspx
..
setUser.aspx
看起来不像。@Roatinmart更新了问题