Maison > Article > interface Web > Parlons de la façon de résoudre le problème #!# dans le chemin ngRoute ?
Cet article vous présentera la solution #!# lorsque le chemin ngRoute apparaît. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Recommandations associées : "tutoriel angulaire js"
Lorsque je travaillais sur un projet open source, j'ai utilisé "angular-route" : "^1.6.4", j'ai découvert qu'après avoir défini le href de la balise 3499910bf9dac5ae3c52d5ede7383485, le chemin qui apparaît après avoir cliqué n'est pas #/, mais #!#. Cependant, je n'ai pas défini hashPrefix.
<a href="#about" class="ng-binding">About</a>
Après avoir cliqué sur l'étiquette, la barre d'adresse apparaîtra : http://localhost:9000/#!#about.
Imprimer $emplacement.
J'ai découvert que le $location que nous avons défini n'était pas affiché dans la partie chemin de la pseudo-URL comme prévu, mais était dirigé vers la partie hachage.
La raison est la suivante : dans la version de route >1.6.0, le hashPrefix par défaut a été modifié en « ! ».
est équivalent au code suivant
$locationProvider.hashPrefix('!');
Il existe deux solutions fournies ci-dessous :
1. Restaurer hashPrefix vers la version antérieure à 1.6. De cette façon.
$locationProvider.hashPrefix('');
2. Changez le format de href
<a href="#!about" class="ng-binding">About</a>
Une autre chose à noter est qu'une fois ngRoute introduite, la balise 3499910bf9dac5ae3c52d5ede7383485 semblera avoir le comportement par défaut remplacé par ngRoute , une fois que le href commence par #, il ajoutera un / à la partie de hachage de l'URL au lieu d'ajouter directement la chaîne à #, donc quelque chose comme 18b46262ad9db4792237c5069a8fe255 " étiqueter. J'ai fait quelques recherches et découvert que je pouvais écrire une instruction puis appeler window.location.hash pour résoudre ce problème.
html
<a goto="#about" href="#about" class="ng-binding">About</a>
js
define(['app'], function (app) { app.directive('goto', function () { return function ($scope, $elem, $attrs) { $elem.click(function () { //console.log($attrs.goto.substring(1)); window.location.hash = $attrs.goto.substring(1); }); }; }); });
Remarque : la définition ci-dessus est requireJS pour définir un module.
Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!