En utilisant angular-ui-router, comment puis-je utiliser la méthode autrement sur $ stateProvider ou comment puis-je l'utiliser?
95
En utilisant angular-ui-router, comment puis-je utiliser la méthode autrement sur $ stateProvider ou comment puis-je l'utiliser?
$stateProvider.otherwise
, donc cela m'aidera)Réponses:
Vous ne pouvez pas utiliser uniquement
$stateProvider
.Vous devez injecter
$urlRouterProvider
et créer un code similaire à:L'
/otherwise
url doit être définie sur un état comme d'habitude:Voir ce lien où ksperling explique
la source
$stateProvider
. C'est moins de travail si vous voulez simplement afficher un modèle, mais pas rediriger. Je préfère la réponse de @ juan-hernandez.otherwise
(dans ce cas'/otherwise'
) doit-elle correspondre au nom de l'état (le premier paramètre à.state
) ou à la valeur de l'url
option?Vous pouvez
$stateProvider
utiliser la syntaxe catch all ("*path"
). Il vous suffit d'ajouter une configuration d'état en bas de votre liste comme celle-ci:Toutes les options sont expliquées dans https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters .
La bonne chose de cette option, par opposition à
$urlRouterProvider.otherwise(...)
, est que vous n'êtes pas obligé de changer d'emplacement.la source
you're not forced to a location change
:?/this/does/not/exist
, l'URL restera ainsi dans la barre d'adresse. L'autre solution vous mènera à/otherwise
Vous pouvez également injecter manuellement $ state dans la fonction sinon, que vous pouvez ensuite naviguer vers un état non url. Cela présente l'avantage que le navigateur ne modifie pas la barre d'adresse, ce qui est utile pour revenir à une page précédente.
la source
Ok, le moment idiot où vous vous rendez compte que la question que vous avez posée est déjà répondue dans les premières lignes de l'exemple de code! Jetez simplement un œil à l'exemple de code.
Jetez un œil ici.
la source
Je veux juste parler des excellentes réponses qui sont déjà fournies. La dernière version de a
@uirouter/angularjs
marqué la classeUrlRouterProvider
comme obsolète. Ils recommandent maintenant d'utiliser à laUrlService
place. Vous pouvez obtenir le même résultat avec la modification suivante:Méthodes supplémentaires: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
la source
Les références de réponse acceptées
angular-route
demandent environui-router
. La réponse acceptée utilise le "monolithique"$routeProvider
, qui nécessite lengRoute
module (alors qu'il aui-router
besoin duui.router
module)La réponse la mieux notée utilise à la
$stateProvider
place et dit quelque chose comme.state("otherwise", { url : '/otherwise'... })
, mais je ne trouve aucune mention de «autrement» dans la documentation à laquelle elle renvoie . Cependant, je vois que cela$stateProvider
est mentionné dans cette réponse où il est dit:C'est là que ma réponse pourrait vous aider. Pour moi, il suffisait d'utiliser
$urlRouterProvider
comme ça:Ma suggestion est cohérente avec la
ui-router
documentation ( cette révision spécifique ), où elle inclut une utilisation similaire du.when(...)
method (le premier appel à la fonction):la source