Je crée une page basée sur des onglets qui affiche certaines données. J'utilise UI-Router dans AngularJs pour enregistrer des états.
Mon objectif est d'avoir un onglet par défaut ouvert lors du chargement de la page. Chaque onglet a des sous-onglets, et je voudrais avoir un sous-onglet par défaut ouvert lors du changement d'onglet.
J'étais en train de tester avec la onEnter
fonction et à l'intérieur que j'utilise, $state.go('mainstate.substate');
mais cela ne semble pas fonctionner en raison de problèmes d'effet de boucle (sur state.go pour remplacer, il appelle son état parent et ainsi de suite, et il se transforme en boucle).
$stateProvider
.state('main', {
url: '/main',
templateUrl: 'main.html',
onEnter: function($state) {
$state.go('main.street');
}
})
.state('main.street', {
url: '/street',
templateUrl: 'submenu.html',
params: {tabName: 'street'}
})
Ici, j'ai créé une démo de plunker .
Pour l'instant, tout fonctionne, sauf que je n'ai pas l'onglet par défaut ouvert et c'est exactement ce dont j'ai besoin.
Merci pour vos suggestions, opinions et idées.
$state.go(to.redirectTo, params, {location: 'replace'});
Cela fera remplacer l'état précédent (c'est-à-dire celui depuis lequel nous sommes redirigés) dans l'historique. Voir la documentation pour $ state.go: angular-ui.github.io/ui-router/site/#/api/…'$stateChangeStart'
en'$stateChangeSuccess'
En fait, même si cette solution proposée par Radim faisait exactement le travail, je devais me souvenir du sous-onglet (état) de chaque onglet.
J'ai donc trouvé une autre solution qui fait la même chose mais se souvient également de chaque sous-état d'onglet.
Tout ce que j'ai à faire était d'installer ui-router-extras et d'utiliser la fonction de redirection d'état profond :
Je vous remercie!
la source
Depuis la version 1.0 de l'interface utilisateur, il prend en charge une
redirectTo
propriété. Par exemple:la source
Depuis la version 1.0 de ui-router, un hook par défaut a été introduit en utilisant IHookRegistry.onBefore () comme illustré dans l'exemple Data Driven Default Substate dans http://angular-ui.github.io/ui-router/feature-1.0/ interfaces / transition.ihookregistry.html # onbefore
la source
$transitions.onBefore({ to: state => state.defaultSubstate != null }, trans => trans.router.stateService.target(trans.to().defaultSubstate));
la source
Si quelqu'un vient ici pour une réponse sur la façon d'implémenter une simple redirection pour un état et, comme cela m'est arrivé, n'a pas la possibilité d'utiliser le nouveau routeur ...
De toute évidence, si vous le pouvez, la réponse @bblackwo est excellente:
Si vous ne pouvez pas le rediriger manuellement:
J'espère que ça aide!
la source