投稿とそのコメントを操作するアプリを作成するために、RESTful JSON API で Backbone を使用しています。Backbone Relational を機能させようとしてきましたが、遅延読み込みで問題が発生しました。
関連するコメントなしで、投稿のリストを読み込みます。リスト内の投稿をクリックすると、コメントを含めた完全な投稿を取得し、これをレンダリングするビューが開きます。
2 つの Backbone.RelationModels、投稿、およびコメントがあります。コメントへの投稿関係は次のように設定します:`
relations: [{
type: Backbone.HasMany,
key: 'comments',
relatedModel: 'Comment',
includeInJSON: true, // don't include it in the exporting json
collectionType: 'Comments'
}]
今私が直面している問題は、まだコメントが含まれていないリストを取得するとすぐに関係が初期化されることです。URI でモデルを取得して、後で完全なデータをロードします。ただし、関係は再初期化されないようです。Posts.get(1).get('comments') を呼び出すと、空のコメント コレクションが返されます。
この問題に最もうまく取り組む方法を誰かが知っていますか? データはありますが、コメントのコレクションが更新されていないようです。
編集: Post モデルに change:comments をそれ自体にバインドさせて、コレクションを更新することができます。ただし、 this.get('comments') は Comments コレクションを返すため、元のコメントの JSON を取得する確実な方法を見つけることができないようです。
注: 私のコレクションでは、次のコードを使用して JSON を解析し、API で動作するようにします。
parse: function(response) {
var response_array = [];
_.each(response, function(item) {
response_array.push(item);
});
return response_array;
}
これは、API によって返される JSON が、ネイティブの JSON 配列ではなく、インデックス付きキー (連想配列) を持つオブジェクトを返すためです。
{
"id" : "1",
"title" : "post title",
"comments" : {
"2" : {
"id" : "2",
"description": "this should solve it"
},
"6" : {
"id" : "6",
"description": "this should solve it"
}
}
}
本当にありがとう!質問があれば聞いてください。どこかで漠然としていると思います。