2016-04-19 3 views
1

Ich habe zwei Tasten. Ich möchte ng-if verwenden, um sicherzustellen, dass eine der Schaltflächen nur sichtbar ist, wenn Sie sich auf einer bestimmten Seite der Anwendung befinden.Holen Sie sich den aktuellen Stand des UI-Router mit ng-if

Ich möchte andere Schaltfläche überall in der Anwendung sichtbar sein, außer wenn Sie auf dieser bestimmten Seite sind.

Also dachte ich, dass ich ng-if verwenden könnte.

BUTTON 1

<md-button ng-if="$state.current.path === example" class="md-icon- button" aria-label="More" ui-sref="health"> 
      <md-icon md-svg-icon="images/back.svg"></md-icon> 
      </md-button> 

BUTTON 2

 <md-button ng-if="!($state.current.path === example)"class="md-icon-button" aria-label="More" ng-click="toggleHamburger()"> 
      <md-icon md-svg-icon="images/menu.svg"></md-icon> 
     </md-button> 

In meinem Controller Ich bin die reguläre ui-Router-Syntax (wie unten)

.state('example', { 
     url: "/example", 
     templateUrl: "components/examples/example.html" 
    }) 

jedoch dies nicht Arbeit: Wie kann ich auf den aktuellen Zustand des UI-Routers zugreifen und diesen verwenden, um zu bewerten, ob meine Schaltfläche sichtbar sein soll oder nicht?

+0

Welche Fehlermeldung erhalten Sie in der Konsole? – Austin

+0

Was und wo nicht funktioniert? – tsuz

+0

keine, die Tasten sind beide sichtbar. Ich glaube nicht, dass es mir gelingt, die aktuelle Route überhaupt zu bekommen. Ich bin mir nicht sicher über die Syntax – andrea

Antwort

2

Sie müssen den Status in Ihrem Bereich angeben.

Controller:

// ... stuff 
$scope.currentPath = $state.current.path 
// ... more stuff 

Ausblick:

<md-button ng-if="currentPath === 'example'" class="md-icon- button" aria-label="More" ui-sref="health"> 
    <md-icon md-svg-icon="images/back.svg"></md-icon> 
</md-button> 
+0

, wenn dies korrekt ist, dann könnte es nur $ state.current.path anstelle von $ state.currentPath in der ng-if – Austin

+0

Ist $ state automatisch im Umfang ausgesetzt? Wenn es dann doch sicher ist, aber wenn es nicht so ist, könntest du es als Zugang bezeichnen, wie auch immer du es wählst, wenn du es tust. – casraf

2

Sie $location.path() hier wie diese verwenden können.

ng-if="$location.path() === example" 
0

Viel einfacher ist ui-sref aktive Richtlinie zu verwenden, fügen Sie eine Klasse, die das Element zeigen und dass es

Beispiel

<ui-sref-active="show-element" class="md-icon-button ng-hide" 

Und dann in Ihrem CSS:

.show-element { 
    display: block/inline-block; 
} 
+0

Wie würde ich das machen? – andrea

+0

bearbeitet die Antwort –