Активное дочернее состояние остается активным, когда оно не должно использовать ng-class и ui-router.

Моя текущая работа над вложенными состояниями (со многими вложенными состояниями) с использованием ui-router и может заставить состояние измениться на активное состояние с помощью ng-класса, например так

ng-class="{active:$state.includes('sidemenu.parent.child<1-3>')}"

однако id хотел бы добавить несколько состояний в активный класс и добиться этого так

`ng-class="{active:[$state.includes('sidemenu.parent.child1'),$state.includes('sidemenu.parent.grandchild1')]}" 

и это работает, однако, когда я выхожу из состояния, оно остается активным. Я создал этот codepen. Похоже на то.

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

Мне бы хотелось, чтобы вкладка child1 не была активной в состояниях child2 и child3.


person garrettmac    schedule 25.12.2015    source источник


Ответы (1)


Просто любопытно, откуда вы взяли следующий синтаксис

ng-class="{active:[$state.includes('sidemenu.parent.child1'),$state.includes('sidemenu.parent.grandchild1')]}"

Надеюсь, если вы измените значение ng-class выше на следующее, оно должно достичь того, что вы ищете.

{active:$state.includes('sidemenu.parent.child1') ||  $state.includes('sidemenu.parent.grandchild1')}
person jkris    schedule 26.12.2015
comment
Это то, что я пробовал (ранее и снова только сейчас), и, похоже, ни одно из состояний не активировало это. Я придумал синтаксис, который я использовал для каждого выражения в массиве, и он работает, но не делает состояние неактивным. - person garrettmac; 26.12.2015
comment
я изменил ваше кодовое перо, codepen.io/anon/pen/BjLYJG. это соответствует вашим требованиям? - person jkris; 26.12.2015