wake-up-neo.com

Wie kann ich ng-hide verwenden, wenn $ location.url == base (root) url?

Ich möchte, dass ein ← Zurück zur Startseite Link auf jeder Seite meiner Angular App mit Ausnahme der Startseite unter der Nagivation angezeigt wird. Daher möchte ich den Link unter bestimmten Bedingungen hinzufügen und ihn mit ng-hide ausblenden, wenn sich die URL bereits auf der Startseite (Ansicht) der App befindet.

Ich habe versucht, den $location-Dienst von angle ohne Erfolg zu verwenden

<p ng-hide="location.hash == '#/'" class="container"><a href="#topics">&larr; Back to Home</a></p>

Ich habe die folgenden Varianten ausprobiert:

ng-hide="location.hash == '#/' " //console.log shows true
ng-hide="location.hash === '#/' " //console.log shows true
ng-hide="location.hash == '' "    //console.log shows false

Ich bin verwirrt, weil location.hash == '#/' funktionieren sollte, wenn ich den Wert von ng-hide protokolliere, wenn ich auf der Startseite true erhalte.

Grundsätzlich versuche ich den hier aufgeführten dritten Ansatz: Wie verwende ich Angular Ng-Hide basierend auf der Seite/Route, auf der ich mich gerade befinde? Aber es funktioniert nicht. Die anderen beiden Ansätze auf dieser Seite scheinen zu kompliziert für das, was ich erreichen möchte.

Was vermisse ich?

10
Tyler

Als erstes sollten Sie, wenn Sie location.hash oder location.url verwenden, tatsächlich das window.location-JavaScript-Objekt verwenden, den $ location-Dienst verwenden, der von angle bereitgestellt wird. In Ihrem Controller würde ich Folgendes erstellen:

$scope.currentPath = $location.path();

Und in deiner HTML:

<div ng-hide="currentPath === '/'"></div>

Da ich über "# /" und "/" vorsichtig sein würde, verwende ich nur den html5-Modus. Ich bin mir also nicht sicher, was der $ location.path zurückgibt, aber Sie können es leicht mit einer console.log ($ location) überprüfen .path ()) Ich denke, es wird nur "/" zurückgegeben, da dies der Pfad für eckig ist, es sollte sich nicht um das # kümmern.

19
Adrian Neatu

Angular sucht nach einer $scope-Variablen mit dem Namen location. Wenn Sie möchten, dass dies funktioniert, müssen Sie Folgendes tun:

$scope.location = window.location

in Ihrem Controller. Dann sollten Sie wirklich $location injizieren und $scope.location = $location setzen.

0
dave