2011-10-13 6 views
8

Backbone.syncを置き換えて何もしないでください。私のアプリは私のためにAJAX POSTを行います「送信」ボタンを持っているので、私はBackbone.syncが提供する自動魔法のデフォルトの動作を使用する必要はありません。Backbone.syncを何も置き換えない方法は?

また、私はレコードを保持以外7.言われていること

が、私はかなりちょうどバックボーンは何もしないようにしたい、このIE6と互換性のあるサイトとを作るしようとしているとして、バックボーンのlocalStorageアダプタを使用する必要はありませんJSメモリ(Spine.jsに似ています)にあります。これも可能ですか?

+0

シンプル、バッ​​クボーンを使用し、シンプルなクロスブラウザAjaxのハンドラに切り替えないでください。ありがとう。 –

答えて

19

これを行う最も簡単な、おそらく最良の方法は、Backbone.Syncを交換することではなく、単にそれを無視します。

コレクション:

  • 保存
  • をフェッチ:

    モデルを作成

  • を取得ここでは、呼び出ししたくない方法があります
  • destroy

これらのメソッドの呼び出しを避けると、効果的にBackbone.Syncを無視し、AJAX呼び出しを行う独自のコードを記述できるようになります。

私が始めたとき、私は、今まで関与サーバーの呼び出しがなくても、バックボーンの多くのコードを書きました。バックボーンのすべての機能を使用する必要があると言うルールはありません。実際、私はその反対が正しいと言います。バックボーンは、そのようなモジュラーな方法で書かれており、機能性と専門性の各領域が非常にうまく機能しており、実際に必要なものだけを使用する必要があります。

メモリにあなたのモデルを作成し、データを格納するためにそれらの上にsetgetを呼び出します。必要に応じてaddremove彼らとコレクションにそれらを詰め込みます。モデルやコレクションをビューに渡し、HTML DOMにレンダリングします。上記のメソッドを呼び出さないようにすれば、Backbone.Syncについて心配する必要はありません。

+0

ありがとう。これは完璧な意味合いがあります。あなたがModel.destroy()を使わないならば、何かを正しく "破壊する"のですか? collection.removeを使用してremoveイベントにバインドしますか? – kidcapital

+0

ええ、そうするでしょう。リファレンスを持つすべてのモデルを参照解除し、ガベージコレクションされます。 –

1

私はかつてBACKBONE.JSのチュートリアルの一部としてthis gistを作りました。それはBackbone.syncをログに書き込むだけで偽造しますが、現実感のようなものにするために、.id属性にモデルの.cid属性をコピーして、モデルを同期させるように見せます。プロダクションでそのテクニックを使用することによるさまざまな望ましくない結果に注意してください!しかし、私たちは皆ここで大人に同意していますよね?ここで

が伐採せずに同じ考えです:

Backbone.sync = function(method, model, succeeded) { 
    if(typeof model.cid != 'undefined') { 
     // It's a freshly made model 
     var cid = model.cid; 
     // ..fake that it's .cid turns into a "real" .id: 
     model.unset('cid').set({id:cid}, {silent:true}); 
    } 
    // Oh yes, it all went sooo well ;-) 
    succeeded(model); 
}; 
+2

私は、3番目の引数がコールバックではないので、これを書いてからAPIが変更されたと思います。私はちょうど '戻ってfalse'とそれは大丈夫動作するようです。しかし、あなたは「いろいろな望ましくない結果」を言います - 私のすべてのデータがクライアントサイドで、永続性の必要がない場合、それらはどうなるでしょうか? –

関連する問題