[解決済み] 「Backbone.jsでコレクション全体を保存する方法 - Backbone.syncとjQuery.ajaxのどちらを使うか?
質問
私はそれができることをよく知っているし、私はかなり多くの場所を見てきました(以下を含む。 コレクション全体を保存するためのベスト プラクティスですか? ). しかし、私はまだ明確ではない"正確にどのように"それはコードで書かれているのですか?(投稿では英語で説明されています。javascriptに特化した説明があれば最高なのですが :)
モデルのコレクションがあるとします。モデル自体はネストされたコレクションを持つことができます。親コレクションのtoJSON()メソッドをオーバーライドし、有効なJSONオブジェクトを取得しました。私はコレクション全体(対応するJSON)を保存したいのですが、バックボーンはその機能を内蔵していないようです。
var MyCollection = Backbone.Collection.extend({
model:MyModel,
//something to save?
save: function() {
//what to write here?
}
});
言いたいことがどこかにあるんだろうけど
Backbone.sync = function(method, model, options){
/*
* What goes in here?? If at all anything needs to be done?
* Where to declare this in the program? And how is it called?
*/
}
一旦'view'が処理を終えると、それはコレクションにサーバー上で自分自身を"save"(一括更新/作成リクエストを処理できる)するよう伝える役割を担います。
発生する質問
- コードでどのように/何を書いて、"配線するのか?
- コールバックの「正しい」場所と、"成功/エラー" コールバックを指定する方法は何ですか? バックボーンにコールバックを登録する構文がよく分からないのですが...。
もしそれが本当に厄介な仕事であれば、ビュー内でjQuery.ajaxを呼び出し、その中で
this.successMethod
または
this.errorMethod
を成功/エラーコールバックとして使用できますか?うまくいくのでしょうか?
私はbackboneの考え方と同期する必要があります。私は、コレクション全体の同期について、確実に何かを失っていることを知っています。
どのように解決するのですか?
私がすぐに思いつくのは、Backbone.Collectionのsaveメソッドをオーバーライドするのではなく、コレクションを別のBackbone.Modelでラップして、その上でtoJSONメソッドをオーバーライドすることです。そうすれば、Backbone.jsはモデルを1つのリソースとして扱い、backoneの考え方をあまりハックする必要はありません。
Backbone.CollectionはtoJSONメソッドを持っているので、ほとんどの作業はあなたのために行われることに注意してください。あなたは、ラッパーであるBackbone.ModelのtoJSONメソッドをBackbone.Collectionにプロキシするだけでよいのです。
var MyCollectionWrapper = Backbone.Model.extend({
url: "/bulkupload",
//something to save?
toJSON: function() {
return this.model.toJSON(); // where model is the collection class YOU defined above
}
});
関連
-
[解決済み] jquery 3.0 url.indexOfエラー
-
[解決済み] jest.fn()の値はモック関数またはスパイである必要があります。
-
[解決済み] ajaxポストからのファイルダウンロードを処理する
-
[解決済み] jQueryは要素のレンダリングされた高さを取得しますか?
-
[解決済み] jQueryを使用して配列から特定の値を削除する方法
-
[解決済み] jQuery セレクタ。Id Ends With?
-
[解決済み] セレクトボックスの選択項目を設定する
-
[解決済み] jQuery .onとhoverの使い分けは可能ですか?
-
[解決済み] jQueryで、ある要素を他の要素に対して相対的に配置するには?
-
[解決済み] jquery input select all on focus
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jquery - is not a function エラー
-
[解決済み] jQuery select onChangeの値を取得する。
-
[解決済み] jQueryのSELECT要素で特定のオプションを選択するにはどうすればよいですか?
-
[解決済み] jQuery hasAttrで要素に属性があるかどうかをチェックする【重複あり
-
[解決済み] .on('click') と .click() の違いについて
-
[解決済み] 動的に生成された要素でクリックイベントが動作しない [duplicate]
-
[解決済み] WebKit の event.layerX と event.layerY に関する問題
-
[解決済み] jQueryは要素のレンダリングされた高さを取得しますか?
-
[解決済み] jQueryでloading spinnerを表示するには?
-
[解決済み] jQuery: テキストで要素を検索する