J'utilise le routage d'AngularUI et j'aimerais effectuer un ng-class="{active: current.state}"
mais je ne sais pas comment détecter exactement l'état actuel dans une directive comme celle-ci.
Réponses
Trop de publicités?Mise à jour:
Cette réponse a été pour beaucoup plus ancienne version de l'Interface utilisateur du Routeur. Pour les versions plus récentes (0.2.5+), veuillez utiliser le helper directive ui-sref-active
. Les détails ici.
Réponse Originale À Cette Question:
Inclure le $service de l'état dans votre contrôleur. Vous pouvez affecter ce service à une propriété sur votre périmètre.
Un exemple:
$scope.$state = $state;
Ensuite, pour obtenir l'état actuel de vos modèles:
$state.current.name
Pour vérifier si un état est actif en cours:
$state.includes('stateName');
Cette méthode retourne true si l'état est inclus, même s'il fait partie d'un état imbriqué. Si vous étiez à un état imbriqué, user.details
, et que vous avez vérifié pour $state.includes('user')
, il faudrait retourner la valeur true.
Dans votre exemple de classe, vous feriez quelque chose comme ceci:
ng-class="{active: $state.includes('stateName')}"
Découvrez angular-ui, en particulier, la vérification de route: http://angular-ui.github.io/ui-utils/