私はapplication.jsコントローラでライブ値のデータを取得するwebsocket接続を持っています。接続を初期化し、データをすべてのページからアクセスし、すべてのページの読み込みを再接続しないようにするために、ここに挿入します。Emberコントローラのデータが他の場所からアクセスされた
他のコントローラやテンプレートからこのデータにアクセスする方法はわかりません。
2つのやりたいこと: 1)ナビゲーションバーのすべてのページで値を確認し、動的価格を更新します。 2)他のコントローラのwebsocketデータにアクセスします。これがapplication.jsですでに定義されているメッセージハンドラに影響するかどうかはわかりません。私はイベントデータが変数になるはずだと思います。
application.jsイニシャライザとサービス拡張になってしまった
headerPrice: 0,
setupWebsocket: function() {
this._super();
var socket = this.get('websockets').socketFor('ws://localhost:7000/');
socket.on('open', this.myOpenHandler, this);
socket.on('message', this.myMessageHandler, this);
socket.on('close', function(event) {
console.log('Websocket closed');
}, this);
}.on('init'),
myOpenHandler: function(event) {
console.log('Websocket Opened: ' + JSON.stringify(event));
},
myMessageHandler: function(event) {
if (event.data == "foo") {
this.headerPrice = event.data.price;
};
}
}
代わりにサービスを使用してください! – Lux
ありがとう、行く道だった。途中で束を学んでいる間に研ぎ澄まされ、働いています。 –