Je voudrais qu'un lien ← Retour à l'accueil apparaisse sous la navigation sur chaque page de mon application Angular, à l'exception de la page d'accueil. J'aimerais donc conditionnellement ajouter le lien et le masquer à l'aide de ng-hide
si l'URL se trouve déjà sur la page d'accueil (vue) de l'application.
J'ai essayé d'utiliser le service $location
de angular sans succès
<p ng-hide="location.hash == '#/'" class="container"><a href="#topics">← Back to Home</a></p>
J'ai essayé les variantes suivantes:
ng-hide="location.hash == '#/' " //console.log shows true
ng-hide="location.hash === '#/' " //console.log shows true
ng-hide="location.hash == '' " //console.log shows false
Je suis perplexe, car si je consigne la valeur de location.hash == '#/'
lorsque je reçois true
sur la page d’accueil, le ng-hide
devrait donc fonctionner.
Fondamentalement, j'essaye la 3ème approche listée ici: Comment utiliser ng-hide angulaire en fonction de la page/route sur laquelle je suis actuellement? Mais ça ne marche pas. Les deux autres approches sur cette page semblent trop compliquées pour ce que j'essaie de réaliser.
Qu'est-ce que je rate?
Tout d’abord, lorsque vous utilisez location.hash ou location.url, vous utilisez en fait l’objet javascript window.location, vous devez utiliser le service $ location fourni par angular. Ainsi, dans votre contrôleur, je créerais:
$scope.currentPath = $location.path();
Et dans votre html:
<div ng-hide="currentPath === '/'"></div>
Bien que je sois attentif aux "# /" et "/", je n’utilise que le mode html5, je ne suis donc pas sûr de ce que $ location.path retournera, mais vous pouvez facilement le vérifier avec un fichier console.log ($ location .path ()) Bien que je pense qu’il ne retournera que "/" car c’est le chemin pour angular, il ne devrait pas se soucier du #.
Angular recherche une variable $scope
appelée location
. Si vous voulez que cela fonctionne, vous devrez faire:
$scope.location = window.location
dans votre contrôleur. Mais alors vous devriez vraiment injecter $location
et définir $scope.location = $location