2013-11-27 10 views
6

Ich möchte die ‚aktive‘ Klasse auf einem Ember Link setzen für mehr als eine Route Helfer, wo die Routen sind nicht verschachtelt. dh. Wenn ich eine Verbindung zu Route1 habe, möchte ich, dass sie aktiv ist, wenn die aktuelle Route Route1 oder Route2 ist.So richten Link ‚aktiv‘ für mehrere verschiedene Routen in EmberJS

Etwas wie:

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

Mein nächstes ideales Szenario gesetzt (oder finden) einen boolean, wenn die Route aktiv ist und dann so etwas wie:

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

Aber ich Ich hebe es lieber kostenlos auf. Vielleicht gibt es einen Standardwert isRoutename boolean, der noch nicht in der Dokumentation ist ...?


Noch keine Antworten. Ich landete dies zu tun:

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

Und dann in der App.ApplicaitonController

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

Es bedeutet, dass ich so etwas wie thins in meiner app-Controller für jeden 'überlastet' Link haben müssen. Wäre es nicht sauberer, dies vollständig in der Vorlage zu erfassen, indem Sie die von ember generierten Standard-Flags/-Attribute verwenden? Ich bin offen für eine elegantere Lösung ... irgendjemand?

+0

möglich Duplikat [EmberJS Set mehrere Eigenschaften auf einmal] (http://stackoverflow.com/questions/8752805/emberjs-set-multiple-properties-at-once) –

+0

@PaulSweatte Ich glaube nicht, dass diese überhaupt verwandt sind. Diese Frage hat mit dem Link-to-Helfer zu tun. Der andere betrifft das Festlegen von Eigenschaften. Wenn ich falsch liege und Sie herausfinden können, wie man setProperties verwendet, um das Ziel zu erreichen, würde ich es gerne in einer JSFiddle oder so etwas sehen. – genkilabs

Antwort

10

Gemäß der link-to#active documentation können Sie dies tun, indem Sie ein Leerzeichen "currentWhen" verwenden, aber dies erfordert Ember 1.8.

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

Dies auch ein Merkmal sein können Sie auf frühere aktivieren baut:

See 'glut-Routing-Multi-Strom-wenn' auf https://github.com/emberjs/ember.js/blob/master/FEATURES.md

Alternativ können Sie die Link- außer Kraft setzen können mit einer der Methoden in diesem SO Beitrag beschriebenen Helfer:

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

+0

Danke für die Antwort auf diesen Jahr alten Thread. Manchmal dauern diese Funktionen eine Weile, aber ich bin froh zu sehen, dass dies durchdacht ist und unterstützt wird. – genkilabs

+0

Ahh, habe das Datum nicht wirklich bemerkt, aber es ist immer noch eine relevante Frage heute und ich bin froh, dass du es gefragt hast;) gut, dass es von den Ember-Leuten angesprochen wurde –

Verwandte Themen