私はバックボーンが初めてで、モデルとコレクションを使用する正しい方法について混乱しています。
2 つのネストされたモデルがParent
ありchild
、1 対多の関係にあります。backbonejs が示唆したように、次のコードがあります。
var Child = Backbone.Model.extend({});
Child.Collection = Backbone.Collection.extend({});
var Parent = Backbone.Model.extend({
initialize: function() {
this.children = new Child.Collection;
}
});
var ParentView = Backbone.View.extend({
var parent = this.model
this.children = parent.children;
});
「サーバーID」による単一の子の編集が必要になるまで、これは正常に機能します。したがって、最終的に 3 つの解決策が得られましたが、どれも私には適切ではありません。
1、サーバーから新しいインスタンスをリクエストして、既存のインスタンスを取得します。
var child = getFromServerById(id);
var parent = parentCollection.get(child.get('parentId'));
child = parent.children.get(child.id);
2、すべての親をループする必要があります (祖先が複数の場合、これは本当にひどいことになります):
var child;
var parent = parentCollection.find(function(parent){
child = parent.children.get(childId);
return child;
});
3、すべてのモデルのグローバル キャッシュを作成します。(これは現在私が行っていることですが、オブジェクトを追加/削除するたびにglobalCacheを維持する必要があります)
var child = globalCache['child'].get(id);
そのため、これを行うための標準的なパターンがあるかどうかを知りたいです。
ありがとう。