Je voulais pouvoir changer l'URL de l'adresse sans changer l'état, afin d'empêcher le rendu des rendus. De ma recherche, ui-router
Ne fournit actuellement pas cela, mais $location.path
De anuglar le fait.
Alors, naturellement, je voulais utiliser $state.get(stateName)
pour accéder à l'URL de l'état, afin que je ne tape pas manuellement l'URL.
J'ai deux problèmes:
$state.get(stateName)
renvoie uniquement le chemin relatif. Comment puis-je obtenir le chemin absolu?Par exemple, si j'ai un état appelé user.home.view
Avec user.home
, Mes états sont définis comme suit:
'user': {
abstract: true,
url: '^/users/'
},
'user.home': {
url: ''
},
'user.home.view': {
url: ':id/'
}
Donc pour le moment, $state.get(user.home.view).url
renvoie :id/
. Comment puis-je obtenir l'URL complète (c'est-à-dire, /users/5/
)?
Vous devriez utiliser $state.href()
.
Pour obtenir l'URL absolue, vous pouvez ensuite utiliser:
$state.href('user.home.view', {}, {absolute: true});
Pour obtenir l'URL avec les paramètres en place, vous devez les ajouter comme deuxième argument.
Qu'en est-il de :
$state.href($state.current.name, $state.params, {absolute: true})
Pour obtenir l'URL absolue sans paramètre, je constate que je dois passer inherit: false
, par exemple:
$state.href('home', {}, {absolute: true, inherit: false})
Sans pour autant inherit: false
Je recevais tout/tous les paramètres qui pourraient être présents.