API で Backbone を使用しようとしています。
デフォルトの API 応答形式は次のとおりです。
{
somemetadatas:xxx ,
results:yyy
}
単一のモデルまたはコレクションのフェッチであるかどうか。
私が知る限り、バックボーンparse
関数を次のようにオーバーライドできます。
parse: function (response) {
return response.results;
},
しかし、私はドキュメントで見ました:
解析する
collection.parse(response)
parseは、コレクションのモデルがサーバーによってフェッチで返されるたびに、Backbone によって呼び出されます。この関数には生の
response
オブジェクトが渡され、コレクションに追加されるモデル属性の配列を返す必要があります。デフォルトの実装はノーオペレーションであり、JSON レスポンスを通過するだけです。既存の API を使用する必要がある場合、または応答の名前空間を改善する必要がある場合は、これをオーバーライドします。その後、モデル クラスに既にparse
関数がある場合は、フェッチされた各モデルに対して実行されることに注意してください。
したがって、そのようなコレクションのフェッチに対する応答がある場合:
{
somemetadatas:xxx ,
results:[user1,user2]
}
コレクションの最初のparse
関数は抽出し[user1,user2]
ます。
しかし、ドキュメントは次のように述べています。
その後、モデル クラスに既に
parse
関数がある場合は、フェッチされた各モデルに対して実行されることに注意してください。
そのため、次を見つけようとしますresponse.results;
。user1
user2
モデルとコレクションの両方のデータが結果属性の下にあるため、モデルとコレクションの両方の解析関数が必要です。
しかし、コレクションをフェッチする場合、モデル解析関数を単一の配列要素に対して使用したくありません。
この問題の解決策はありますか?
コレクション解析関数が次のように変換されるソリューションを考えています。
{
somemetadatas:xxx ,
results:[user1,user2]
}
このようなものに:
[ {results.user1} , {results.user2} ]
モデル解析関数がコレクション フェッチで失敗しないようにします。しかし、それは少しハックです...この問題に対するエレガントな解決策はありますか?
ところで、私の API は常にこの形式の結果を生成するためparse
、すべてのモデルとコレクションの関数をデフォルトでオーバーライドすることは可能ですか? (申し訳ありませんが、私は JS 初心者です...)