В основном возникают проблемы с управлением моим родительско-дочерним состоянием, поскольку я новичок в ui-router. Однако я провел исследование и наткнулся на решения, которые требуют жесткого кодирования маршрутов, но не являются динамическими.
Что у меня сейчас есть:
<div> <!-- parent state -->
<div ng-if="'.' | isState">
<!--
background hierarchy that should be visible only when
parent state is active and not a child state of the parent
-->
</div>
<nav>
<a ui-sref="." ui-sref-active="active">Parent</a>
<a ui-sref=".child1" ui-sref-active="active">Child 1</a>
<a ui-sref=".child2" ui-sref-active="active">Child 2</a>
</nav>
<div ui-view></div>
</div>
Чего я пытаюсь достичь? Когда родитель загружается, я хочу, чтобы фон что-то показывал. Занимает весь экран. ui-view
не займет весь экран. Таким образом, я хочу, чтобы фоновый элемент был скрыт или удален, когда маршрут не точно соответствует родительскому состоянию (если родительский маршрут равен /root/parent
, я хочу, чтобы фон был виден только тогда, когда состояние точно /root/parent
, а не /root/parent/child1
).
Я могу достичь того, чего хочу, только если предоставлю точный ожидаемый маршрут. Например ng-if="'root.parent' | isState"
.
Кроме того, ui-sref-active="active"
сохраняет active
класс, когда отображаются дочерние представления (это ожидается, но я хочу, чтобы класс был активен только тогда, когда маршрут точно совпадает).
Тем не менее, я не считаю целесообразным жестко запрограммировать маршрут родительского объекта в поле зрения. Я просто хочу, чтобы он соответствовал тому маршруту, к которому он принадлежит. Таким образом, если я позже решу переместить его в /root/parent/car
, мне не придется обновлять ng-if
и ui-sref-active
, чтобы отразить это изменение.
Кто-нибудь сталкивался с проблемой и смог ее решить?
active
из дочерних маршрутов<a ui-sref=".child1">Child 1</a>
и добавитьcss
в классactive
, чтобы он отображался только в фоновом режиме. - person Sravan   schedule 23.03.2017