2016-11-18 9 views
0

私はEmberJSが "データダウン、アクションアップ"を促進していることを知っていますが、私はそのパラダイムにどのようにフィットするかわからないというシナリオを持っています。私が達成しようとしているものに似た例で説明するのが一番です。無関係のコンポーネントとEmberルート通信

固定ヘッダーコンポーネント( 'fixed-header')があるとします。

{{fixed-header}} 
{{outlet}} 

を今度は、私は私のヘッダは、私が上だルートに関するいくつかの情報を表示したいとしましょう:私はもちろん、私は私のメインのアプリケーション・テンプレートに追加するように、このヘッダは、常に表示させたいです。簡単にするために、各ルートに固定ヘッダーに表示したいタイトルがあるとします。だから私が/fooまたは/foo/bar/bazまたは/wackawacka/meh?cat=meowにいるかどうかにかかわらず、私はそのルートが表示するためにいくつかのデータをfixed-headerコンポーネントに送ることができるようにしたい。言い換えれば、私はちょっと「データダウン」に反対し、「データアップ」したいと思っています。

これにアプローチするにはどうすればよいでしょうか?私の最初の本能は、my-headerが聴いているルートとそのルートに情報を投稿できるサービスを作ることでした。しかし、それは正しいことですか?ちょっとしたテキストを送るだけのサービスを作るのは私にとっては奇妙なことです。別の方法がありますか?

+1

に正直なところ、私はサービスがそのための完璧だと思います。実際には、いつかはそのためのルーティングサービスを期待しています。 – Lux

+0

さて、私はちょうどこの機能のためのサービスを持っているのは残酷だと思った。 – accelerate

答えて

2

コンポーネントにパラメータを使用できます。

{{fixed-header info=headerInfo}} 
{{outlet}} 

そして、いくつかのフックで任意の経路

setupController: function(controller, model) { 
    this._super(controller, model); 
    var headerInfo = ... 
    this.controllerFor('application').set('headerInfo', headerInfo); 
} 
+0

私は実際にこのソリューションが好きです。私はコンポーネントに小さなテキスト文字列を送るだけで済むので、サービスを使うことに躊躇していました。サービスは過度のように思えました。より多くのデータを送信する必要があると判断した場合でもサービスを使用することができますが、今のところソリューションは完全に機能します。 – accelerate

1

サービスは行く方法です。参照Service Ember Guide

Ember.Serviceは、アプリケーション期間中存続し、アプリケーションのさまざまな部分で利用できるEmberオブジェクトです。 サービスは、共有状態または永続接続が必要な機能に役立ちます。

関連する問題