$ location.path () vs $ location.hash () dans angularjs
si mon URL est : xzy.com/#/home/new
$location.hash()
donne home/new
et $location.path
donne également home/new
- Quelle est la différence entre les deux?
- Si à l'intérieur du contrôleur de la maison/de nouveau j'écris
$location.hash("#/home/new")
ou$location.path("/home/new")
à la fois ne pas recharger l'partielle, mais si je nelocation.href="#/home/new"
il recharge la partielle. Pourquoi est-ce?
Aussi, si à l'intérieur de l'partielle il y a un <a href="#/home/new">
qui va également recharger la partie.
Pourquoi ne pas définir le chemin d'accès/hachage de rechargement partiel?
source d'informationauteur Bhumi Singhal
Vous devez vous connecter pour publier un commentaire.
Il y a deux parties à la route.
La première "hash" est vraiment là juste pour la compatibilité de navigateur et de ne pas s'afficher si vous êtes en mode HTML5.
Par exemple, à partir de cette URL:
Si vous définissez:
vous obtiendrez:
Dans ce cas, le "hash" est juste pour le navigateur pour contenir l'URL, la méthode est le chemin. Notez également lorsque vous appelez chemin sans précédent /il est ajouté, c'est à dire
'myPath'
devient'/myPath'
.Si par la suite vous définir:
Vous obtiendrez:
Enfin, supposons que vous n'avez pas défini la voie d'abord, vous obtiendrez alors:
Si vous utilisez le mode HTML5, le chemin est ajoutée sans le hachage initial.
La première de hachage est utilisé pour ajouter de la route, la deuxième est une référence à un contenu sur la page. Par exemple, si vous utilisez le
$anchorScroll
service, répondre à ce qui est placé dans$location.hash()
et pas dans$location.path()
.Pour résumer:
J'ai eu une question similaire ce matin puis Google m'a amené ici.
Inspiré par d'autres réponses et certains Googlings j'ai fait, voici mon résultat:
par exemple, étant donné l'url d'un navigateur:
dans AngularJS ,
url
estpath
estdans un autre mot , de gauche à droite ,
path
commence à le premier caractère dans l'url, et se termine à la#
ou?
ou à la fin de l'url.path
toujours commencer par"/".donc ,si pas depath
est spécifié ,le chemin d'accès est défini comme "/
" plutôt que ""
hash
estdans un autre mot ,
hash
commence au caractère suivant de#
dansurl
et se termine à la fin deurl
location.href
n'est pas mis en œuvre dans AngularJS. quand vous dites:location.href="#"
,il se comporte comme cliquer sur unanchor
tag :quand il faut appeler la méthode
$location.path
,$location.hash
comme les setters, ils le faire changer l'adresse url du navigateur pour correspondre à vos demandes.Et ,pourquoi vous voulez AngularJS pour RECHARGER une page? 🙂