Backbone.Marionette および Backbone.ioSync で Backbone.Relational を使用して、socket.io 経由で同期しています。
より具体的には、関係を介してモードのインスタンスを作成するモデルA
があります。読み込み時には、データが適切に初期化され、レンダリングされます。次に、別のクライアントが の別のインスタンスをに追加します。サーバーは ping を最初のクライアントに送信します。これにより、. フェッチの成功メソッドでは、 を呼び出します。fetch メソッドはリレーションの ID のリストのみを返し、 onをトリガーし、Backbone.Marionatte のコレクション ビューがアイテム ビューの新しいインスタンスを作成して、新しい を表示します。これにより、新しいがまだフェッチされていないため、サイトが壊れます。 .hasMany
B
bees
B
A.bees
A.fetch()
A.fetchRelated('bees')
bees
change
A
B
B
B のビューのレンダリングを、A で定義された遅延オブジェクトに強制的に同期させようとすると、多くのエッジ ケースを処理しなければならない複雑なハックのように思えます。
1 つのアイデアは、オプションfetch
を受け入れることを許可することです。しかし、 の関数でおよびイベントsilent
をトリガーするのは、おそらくトリッキーです。change
add
success
fetch
もう 1 つのアイデアは、サーバーコンテキストのシリアル化コードを認識させ、新しいアイテムが追加されたときに ID だけでなくオブジェクト全体を送信することです。これは、別の A に追加されたときに、同一の B 全体が不必要に転送される可能性があるため、最適ではありません。また、シリアライゼーション プロセス全体にコンテキストを伝達する必要があるため、サーバー コードがさらに複雑になります。
これにアプローチする方法についての考えや提案はありますか? Backbone.Marionette または Backbone.Relational が機能する限り、変更が必要になる可能性のあるソリューションを受け入れます。