私はAPIでバックボーンを使用しようとしています。バックボーンの解析機能を無効にする
デフォルトAPIのレスポンスの形式は次のとおりです。それは、単一のモデルやコレクションのためにフェッチだかどうか
{
somemetadatas:xxx ,
results:yyy
}
。
parse: function (response) {
return response.results;
},
しかし、私はthe documentationで見てきた:
collection.parse(response)
パースパースだから、限り、私は私がバックボーン
parse
機能を無効にすることができます知っているようは、いつでもバックボーンによって呼び出されます ac ollectionのモデルは、フェッチ時にサーバーによって返されます。 関数は、未加工の
response
オブジェクトに渡され、 モデル属性の配列をコレクションに追加する必要があります。デフォルトの 実装はノーオペレーションで、JSONレスポンスを単に通過します。 既存のAPIを使用する必要がある場合はこれを上書きするか、 の方がレスポンスに名前を付けてください。その後、モデルクラス に既にparse
機能がある場合は、取り出した各 モデルに対して実行されます。
私はコレクションの応答を持っているのであればそのようにフェッチ:コレクションの
{
somemetadatas:xxx ,
results:[user1,user2]
}
最初parse
機能は[user1,user2]
を抽出します。
しかし、DOCは言う:あなたのモデルクラス はすでにparse
機能を有していれば、その後、それは各フェッチ モデルに対して実行されることを
注意を。
だから、両方のモデルとコレクション件のデータがresult属性の下になりますので、私はモデルとコレクションの両方の解析機能を必要とするresponse.results;
user1
上とuser2
見つけようとします。
しかし、私がコレクションをフェッチした場合、モデルの解析関数を再び1つの配列要素に使うことは望ましくありません。
この問題を解決する方法はありますか?
私は私のコレクションの解析機能は、このような何か変革するソリューションを考える:モデルの解析機能がオンに失敗しないように
[ {results.user1} , {results.user2} ]
:このような何かに
{
somemetadatas:xxx ,
results:[user1,user2]
}
をコレクションフェッチ。 しかし、これはちょっとハッキーです...この問題の解決策はありますか?ところで
は、常にこのフォームの結果を生成します私のAPIとして、それはデフォルトではすべての私のモデルやコレクションのparse
関数をオーバーライドすることは可能でしょうか? (申し訳ありませんが、私はJSノブです...)
おかげで –
マイカスタム 'parse'が呼ばれますが、効果はありませんことをしようとします - モデルの値は唯一のコンストラクタで提供された最初のIDです...どれアイデア? – Dor
モデルIDを使用しようとしている場合、バージョン1.1.0以降はできません。 http://backbonejs.org/#changelogそうでない場合は、質問を投稿する必要があります。 – nikoshr