Angular: вложенное состояние не работает в UI-Router

0

Многоуровневое вложение не работает в ui-router. Я добавил "ui-view" внутри шаблона с именем "tpl.hello.html", который является шаблоном состояния "home.hello". Это состояние "home.hello" является дочерним состоянием "домашнего" состояния. После этого я добавил следующее состояние в stateprovider:

 .state('home.hello.test', {
      url: '/test',
      templateUrl: 'tpl.hellonested.html'
 })

Но это состояние "home.hello.test" не загружается в состояние "home.hello".

Вот и выглядит plunkr.

  • 0
    Я попробовал ваш plunkr и он работает как раз.
Теги:
angular-ui-router
routing

2 ответа

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

Я не видел никаких проблем, и, основываясь на вашем plunkr, ваши маршруты

-Home
   *Home.Home1
      >Home.Home1.Test
   *Home.Home2

Поэтому, если вы перейдете в "Home.Home1", он НЕ загрузит "Home.Home1.Test", но если вы загрузите "Home.Home1.Test", он также загрузит все его родительские состояния. Вот plunkr (немного изменил его).

  • 0
    я понял, что только что сказал то же самое с Томом Шеном
  • 0
    Спасибо за объяснение с plunkr.
0

Я думаю, что вы ошиблись в планировании размещения в ui-router. Дочернее состояние загружает родительское состояние, а не наоборот.

В вашем собственном plunkr вы можете увидеть, что родительское состояние (home.hello) загружается в дочернее состояние (home.hello.test), если вы нажмете тест ссылки.

<div ui-view></div> просто определяет положение дочернего представления в родительском представлении. Если вы разместите его сверху с родительским представлением, дочернее представление будет загружаться поверх родительского представления, если вы поместите его снизу, оно будет загружаться снизу.

Существует хорошая документация по этой ссылке

Надеюсь, что это поможет вам.

  • 0
    Я знаю, что дочернее состояние загружает родительское состояние, но моя проблема связана с многоуровневыми вложенными состояниями. Итак, «home.hello» является родительским состоянием «home.hello.test», тогда почему он не отображает html.
  • 0
    Он отображает HTML, но только когда вы переходите в дочернее состояние. Нажмите на свою последнюю ссылку (на ваше дочернее состояние), и она отобразит как ваш дочерний html, так и родительский html. Переход к вашему родительскому состоянию не будет отображать HTML вашего ребенка. Вот так работают штаты. Многоуровневые вложенные состояния - это тот же принцип, только больше слоев.

Ещё вопросы

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