2017-10-08 6 views
0

私は動的に更新したいデータテーブルを持っています。Ember - ember-dataからテーブルデータを初期化し、websocket経由で更新します

ユーザーがページに移動すると、私のレールバックエンドのデータでテーブルを初期化します。モデルフックとエムバーデータで簡単に。

次に、接続されたwebsocketストリームを使用してこの情報をリフレッシュしておきたいと思います。

これはどのように管理する必要がありますか?バックエンドにデータをコミットすることなく、モデルをwebsocketの更新で更新する必要がありますか?テーブルデータはコンポーネント内のオブジェクト配列です。モデルのsetupController関数からこれを初期化すれば、配列を直接更新し続ける必要がありますか?

websocketデータJSONをモデルまたはテーブル配列にマップする簡単な方法はありますか?

答えて

0

はい、Ember Dataでこれを行うことができます。警告:私はこれを試していない。

あなたのwebsocketストリームを開き、 "onmessage"ハンドラを追加しています。そのハンドラでは、サーバからペイロードを受け取ります。store.pushPayload()を使用してストア内のレコードを更新できます。レコード(idフィールドで識別される)が既にストアにある場合、そのレコードは置換されます。それ以外の場合は、新しいレコードとして追加されます。現在のテンプレートにレコードを表示している場合は、新しいレコードがプッシュされたときに値が変化するのを見てください。

This Ember guide pageでは、サーバーからのデータをストリーミングしていて、ユーザーインターフェイスの即時更新を確認する必要があります。

追加の読書:the API for pushPayload

+0

私はこれを行うことができました。シリアライザがモデルに結び付けられていることを除けば、うまく動作します。バックエンドはJSONの1つのフォーマットとWebSocketのものを提供します。私はそれを心配し、websocket形式を変更しました。 –

+0

シリアライザが必要ない場合は、 'store.pushPayload()'ではなく 'store.push()'を使うことができます。 –

関連する問題