1

Backbone.Marionette および Backbone.ioSync で Backbone.Relational を使用して、socket.io 経由で同期しています。

より具体的には、関係を介してモードのインスタンスを作成するモデルAがあります。読み込み時には、データが適切に初期化され、レンダリングされます。次に、別のクライアントが の別のインスタンスをに追加します。サーバーは ping を最初のクライアントに送信します。これにより、. フェッチの成功メソッドでは、 を呼び出します。fetch メソッドはリレーションの ID のリストのみを返し、 onをトリガーし、Backbone.Marionatte のコレクション ビューがアイテム ビューの新しいインスタンスを作成して、新しい を表示します。これにより、新しいがまだフェッチされていないため、サイトが壊れます。 .hasManyBbeesBA.beesA.fetch()A.fetchRelated('bees')beeschangeABB

B のビューのレンダリングを、A で定義された遅延オブジェクトに強制的に同期させようとすると、多くのエッジ ケースを処理しなければならない複雑なハックのように思えます。

1 つのアイデアは、オプションfetchを受け入れることを許可することです。しかし、 の関数でおよびイベントsilentをトリガーするのは、おそらくトリッキーです。changeaddsuccessfetch

もう 1 つのアイデアは、サーバーコンテキストのシリアル化コードを認識させ、新しいアイテムが追加されたときに ID だけでなくオブジェクト全体を送信することです。これは、別の A に追加されたときに、同一の B 全体が不必要に転送される可能性があるため、最適ではありません。また、シリアライゼーション プロセス全体にコンテキストを伝達する必要があるため、サーバー コードがさらに複雑になります。

これにアプローチする方法についての考えや提案はありますか? Backbone.Marionette または Backbone.Relational が機能する限り、変更が必要になる可能性のあるソリューションを受け入れます。

4

1 に答える 1

0

Marionette に Marionette.Async が追加され、非同期フェッチおよび fetchRelated リクエストの実行が容易になりました。silentさらに、Backbone-Relational には、オブジェクトを で保存するときにバックボーンによって自動的に渡されるオプションを考慮しないというバグがありましたwait: true。これを修正するためのプル リクエストについては、 https://github.com/PaulUithol/Backbone-relational/pull/153を参照してください。

于 2012-07-15T07:37:29.200 に答える