Укажите текущий маршрут внука без текущего дочернего маршрута в ui-router

0

У меня есть один родительский вид и много дочерних представлений. Можно ли указать состояние для одного из этого ребенка как для внука, но без указания текущего дочернего имени в состоянии и как?

Итак, в моей конфигурации я хочу иметь что-то вроде этого:

.state("parent", {
    url: "" // Resulting url is /
})
.state("parent.child", {
    url: /ChildUrl // Resulting url is /ChildUrl/
})
.state("parent.{some param}.grandchild", {
    url: "" // Resulting url is /ChildUrl/
})

ИЛИ Как изменить одно дочернее представление на другое без изменения URL-адреса в браузере без решения внука?

Теги:
angular-ui-router

2 ответа

0
Лучший ответ

Итак, наконец, решила его с удалением параметра url в конфигурации состояний для родительского представления и дочернего представления, которое можно было бы представить в качестве grandchild. Он работает так, что мне нужно

0

Используйте внутри родительского шаблона.

<div class="parentTemplate">
  <h1>Parent Title</h1>
  <ui-view></ui-view>
</div>

шаблон child1:

<div class="child1Template">
  <h1>Child1 Title</h1>
</div>

шаблон child2:

<div class="child2Template">
  <h1>Child2 Title</h1>
</div>

Конфигурация состояния:

.state("parent", {
    url: "",
    templateUrl: "templates/parent-template.html"
})
.state("parent.child1", {
    templateUrl: "templates/child1-template.html"
})
.state("parent.child2", {
    templateUrl: "templates/child2-template.html",
    params: { 'child2Param': 'Default' }
})

Переход к parent.child1 или parent.child2 будет выполняться, но директива <ui-view> будет заполнена соответствующими дочерними шаблонами. Вам не нужен URL-адрес для перехода между состояниями. Внесите $ state в контроллер с навигацией и используйте $state.go('parent.child1'). Если вам нужно передать параметры, определите их в свойстве params в каждом состоянии и вызовите изменение состояний с помощью $state.go('parent.child2', {'child2Param', someObject.withDynamicValue }.

  • 0
    Проблема в том, что мне нужно изменить URL-адрес у одного ребенка, но не менять его у другого ребенка с сохранением URL-адреса предыдущего ребенка. Вот почему я думаю о внучке, но не знаю, как правильно это указать. И я также использую $state.go
  • 0
    Разве это не работает, если вы добавляете URL в одно состояние, а не в другое? Он перейдет в состояние и затем изменится window.location соответственно. Или перейдите по ссылке и загрузите дочернее состояние соответственно.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню