Angulaire de l'INTERFACE utilisateur du Routeur: Comment puis-je obtenir de la vue parente à être “actif” lors de la navigation d'affichage imbriqué?
Je suis en train de travailler sur un projet qui a mis en œuvre l'INTERFACE utilisateur du routeur et c'est à l'aide de ui-sref-active="active"
pour ajouter la classe active le menu de navigation élément lorsque celui-ci est l'itinéraire actuel. Toutefois, lorsque vous accédez à un affichage imbriqué à l'intérieur de ce point de vue, le parent de l'élément de menu n'est plus actif. Voir la suite Plunker:
http://plnkr.co/edit/2CoEdS?p=preview
Par défaut (ou si vous cliquez sur ce Parcours de 1 est "actif". Lorsque vous cliquez sur "Afficher la Liste", vous verrez que la Route 1 n'est plus actif.
Edit:
La seule différence entre cet exemple et bien mon projet, c'est que le menu de navigation dans mon projet dispose de son propre contrôleur et ainsi de ne pas utiliser le même champ d'application que le contrôleur pour "route1".
- Cette question est de 2 ans, il y a beaucoup de réponses, et de l'API a radicalement changé depuis que j'ai posté, donc s'il vous plaît, ne perdez pas votre temps.
Vous devez vous connecter pour publier un commentaire.
MODIFIER Pour la mise à jour de l'interface utilisateur-routeur 0.2.13:
ui-sref-active="active"
fixe désormais le "actif" de la classe lors de l'état actuel de l'interface utilisateur-sref de l'état ou tout enfantui-sref-active-eq="active"
se comporte comme les précédentes itérations de l'interface utilisateur-sref-active, et que les ensembles de la classe pour l'état exactRéponse Originale À Cette Question:
Voir ouvrir l'interface utilisateur du routeur questions:
https://github.com/angular-ui/ui-router/issues/704 et Huit cent dix huit
Une solution de contournement générale les gens sont suggérant:
Bien sûr, $etat doit être ajouté à $champ d'application. Voir mise à jour plunk: http://plnkr.co/edit/KHLDJP?p=preview
ng-class="{active: ('route1' | includedByState)}"
qui se traduit parng-class="{active:$state.includes('route1')}"
ng-class="{active:$state.current.name == 'myRoute'}"
Vous avez une mauvaise compréhension de l'interface utilisateur-sref-active="active"
Cela permettra de montrer css spéciale soulignant que lorsque vous êtes en état de route1 (référence https://github.com/angular-ui/ui-router/wiki/Quick-Reference#wiki-ui-sref-active). C'est le cas lorsque vous cliquez sur sur la route 1. Mais lorsque vous cliquez sur "Afficher la liste" vous n'êtes plus en route1.
Plutôt que vous êtes dans l'état "route1.la liste" . Vous pouvez vérifier cela en écrivant le code suivant. C'est strictement pour comprendre comment l'etat.
js
à l'intérieur du contrôleur de
à l'intérieur du html
Si vous regardez de près à la documentation de l'interface utilisateur-sref-actif, non seulement il ressemble à stateName mais aussi stateParams, donc quand vous allez à la sous-état, il ne change plus de css. À partir du code source, il devient plus clair.
pour résoudre le problème, n'oubliez pas la portée des variables sont hérités de vues imbriquées.
à l'intérieur de contrôleur de route.
en html
Angulaire de l'INTERFACE utilisateur du routeur prend désormais en charge ce mode natif. Voir commettre https://github.com/angular-ui/ui-router/commit/bf163ad6ce176ce28792696c8302d7cdf5c05a01
Ma solution a été de définir:
L'état a déjà été ajouté à la manette de la portée de l':
$state.includes
ne fonctionne pas pour les vues imbriquées. Il l'habitude de travailler pourroute1.nested
.Vous n'avez pas besoin de faire quelque chose dans les contrôleurs. Voici mon code d'exemple:
En route configuration:
Maintenant, ils ont mis à jour et la nouvelle façon de faire qui est
Ci-dessous le fichier d'état de l'
Nous avons déjà une solution sans "hack" ICI
C'est la façon de le faire:
HTML >
Notre routeur configuration sera comme ceci >
Je suis venu ici 2 ans plus tard, la question a été posée mais
angular-ui-router
a beaucoup de maîtrise de l'approche dans la résolution de ce problème. Il a travaillé pour imbriquée des états-unis.Lors de l'application accède à
home
de l'état, c'est comment le HTML résultant apparaît :Une documentation complète.
J'espère que c'est ce que vous avez été recherchez.Placez le parent url dans la liste de classe ,maintenant, chaque fois que vous accédez à des enfants de classe de classe parent sera actif
Étape 1: Ajouter un Contrôleur pour votre barre de navigation orin votre contrôleur existant où la barre de navigation est inclus ajouter le suivant
Etape 2: Dans votre barre de navigation
C'est tout.