2011-07-13 10 views
0

私はxml APIデータフィードでバックボーンjsを使用しています。私はxmlを受け取り、それをjsonに変換する各ページのトップレベルモデルを持っています。次に、コントローラを使用してjsonモデルの特定の部分を特定のビューに戻すメソッドがモデルに追加されました。これはすべて期待通りに機能しています。定期的にバックボーンJSモデルを更新する

定期的に(setTimeoutを介して)最上位モデルを更新し、変更イベントを発生させてビューを更新したいと思います。私の質問は、実際にユーザーのトリガーイベントではないため、この定期的なイベントの発生を処理/初期化してモデルを更新する場所です。

答えて

1

私のモデルにstartUpdate()メソッド、endUpdate()メソッド、およびフェッチを行ったonTimerUpdate()メソッドを与えます。その後、モデル上でstartUpdate()を呼び出して、必要に応じて実行させ、サーバー側の更新が実行される(たとえば、顧客がデータを操作する)のに不便な場合は一時停止し、それはクライアント側の変更がサーバーへの書き込みを正常に完了した後です。

さらに、それをミックスインにして、さまざまなモデルで使用することもできます。

+0

私はモデルにstartUpdate、endUpdate、onTimerUpdateを追加しました。マイページコントローラのインデックスアクションでstartUpdateを呼び出し、モデルをさまざまなビューに渡します。これにより、モデルがすべてのビューに確実にバインドされます。私が今問題としているのは、コントローラを使ってモデルの特定の部分を別のビューに渡して、ビューを再利用するための一般的な属性としてmodel.getDerivedSubModel()などです。 – user843058

+0

しかし、これを実行しようとすると、モデルは更新されますが、ビューが再レンダリングされると、メソッドによって返される派生データは変更されません(ビューが再レンダリングされたときにモデルをコントローラに渡さないなど)。コントローラを介して、モデルの特定の部分をビューにバインドする方法は、バックボーンにはありますか?私は1つのモデルでこのデータをすべて理想的なケースではないと思っていますが、1つのURLから始まり1つのXMLブロブで返されるため、どのように分割するのか分かりません。 – user843058

+0

モデルは物事のコレクションですか?それとも、ほんの1つの大きな塊ですか?それがコレクションの場合は、動的フィルタを作成し、ビューのコレクションの一部のみを表示することができます。しかし、モデルに現在の状態が反映されるはずだから、あなたのモデルを計測して(つまり、たくさんの 'console.log()s')モデルを更新して、どのような変更が更新されたかを確認するように聞こえます。それが変更された場合は、ビューも変更する必要があります。 –

関連する問題