2013-11-27 6 views
6

Emberリンクで「アクティブ」クラスを設定したい場合は、ではなくのネストされた複数のルートに対してヘルパーに設定します。 すなわち私がroute1へのリンクを持っているなら、現在のルートがroute1またはroute2のときにアクティブにしたいと思います。EmberJS内の複数の異なるルートにリンク 'アクティブ'を設定するには

のようなもの、:私の次の理想的なシナリオを設定(または見つける。)ルートがアクティブであるブール、次にような何かをされて

{{#link-to 'route1' currentWhen="route1, route2"}}Things-N-Stuff{{/link-to}}

{{#link-to 'route1' class="isRoute1:active isRoute2:active"}}Not-as-good{{/link-to}} 

しかし、私は」むしろそれを無料で手に入れてください。おそらくデフォルトのisRoutenameブール値がありますが、これはまだドキュメントにはありません...?


まだ回答がありません。

{{#linkTo "things" tagName="li" href=false}} 
    <a {{bindAttr href="view.href"}} {{bindAttr class="isThingsLinkActive:active"}}>Things</a> 
{{/linkTo}} 

そしてをApp.ApplicaitonController

isThingsLinkActive: function(){ 
    return ['things.index','thing.index','stuff.index'].contains(this.get('currentPath')); 
}.property('currentPath'), 

にそれは私が各「オーバーロードされた」リンクのための私のアプリのコントローラで薄くなりのようなものを持っている必要があることを意味:私はこれをやってしまいました。 emberによって生成されたデフォルトのフラグ/属性を使用して、これをテンプレートで完全に取り込むのがよりクリーンではないでしょうか?私はよりエレガントなソリューションに誰かがオープンですか?

+0

可能重複の[一度にEmberJS設定された複数のプロパティ] (http://stackoverflow.com/questions/8752805/emberjs-set-multiple-properties-at-once) –

+0

@PaulSweatte私はこれらがまったく関連しているとは思わない。この質問は、リンク先ヘルパーと関係がある。もう1つはプロパティの設定です。私が間違っていて、setPropertiesを使って目標を達成する方法を理解することができます。私はそれをjsfiddleなどで見たいと思っています。 – genkilabs

答えて

10

link-to#active documentationによれば、スペース区切りの「currentWhen」を使用してこれを行うことができますが、これにはEmber 1.8が必要です。

{{#link-to 'route1' currentWhen="route1 route2"}}Things-N-Stuff{{/link-to}} 

これはまた、あなたが以前に有効にできる機能かもしれビルド:

見る「エンバー・ルーティング・マルチ電流」またhttps://github.com/emberjs/ember.js/blob/master/FEATURES.md

に、あなたがリンク - をオーバーライドすることができますこのSO記事で説明する方法のいずれかでヘルパーします

Is there a way to pass an array to currentWhen in EmberJS?

+0

この歳のスレッドに応答してくれてありがとう。これらの機能にはしばらく時間がかかることがありますが、これが考えられ、サポートされることを嬉しく思います。 – genkilabs

+0

ああ、実際に日付に気づいていなかったが、それは今日でも関連する質問です。私はあなたにそれを聞いてうれしいです;)Emberの人々によって対処されている –