Maison >interface Web >js tutoriel >Parlons de la façon de résoudre le problème #!# dans le chemin ngRoute ?

Parlons de la façon de résoudre le problème #!# dans le chemin ngRoute ?

青灯夜游
青灯夜游avant
2021-05-11 10:34:492506parcourir

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.

Parlons de la façon de résoudre le problème #!# dans le chemin ngRoute ?

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(&#39;!&#39;);

Il existe deux solutions fournies ci-dessous :

1. Restaurer hashPrefix vers la version antérieure à 1.6. De cette façon.

$locationProvider.hashPrefix(&#39;&#39;);

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([&#39;app&#39;], function (app) {
	app.directive(&#39;goto&#39;, 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer