3

バックボーンパーティーに遅れる理由は、既存のWebサービスとうまく連携しないのではないかと心配しているためです。自分のバージョンのバックボーンコントローラーとモデルを使用するようになりましたが、自分の(確かに)もっと悪い実装を書くだけでは無駄です。

Asp.net Webサービスを使用しているため、ユーザーモデルを更新することを前提として、次の3つの呼び出しを使用します。

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

これがバックボーンでどのように機能するかわかりませんsyncか?fetch/savedestroy?を上書きする必要があると思います

いくつかの良い例に本当に感謝します。注釈付きのソースを含めて、このテーマについて読みましたが、「あはは」の瞬間に苦労しています。

4

1 に答える 1

13

要素をフェッチ/更新/破棄するときの代わりに呼び出されるカスタム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 動詞として使用するのが面倒な場合は、追加して POST を強制できます。改訂版については、http://jsfiddle.net/nikoshr/4ArmM/1/Backbone.emulateHTTP = true;を 参照してください。

于 2012-11-06T16:21:17.380 に答える