#javascript #angularjs #parent-child #angular-ui-router #nested-views
#javascript #angularjs #родитель-потомок #angular-ui-router #вложенные представления
Вопрос:
Загружается то дочернее состояние, которое я ставлю первым в своей настройке маршрутизации. Все остальное работает просто отлично. Разрешенные зависимости наследуются так, как должны, представление визуализируется и создается экземпляр контроллера. Но второе дочернее состояние полностью игнорируется…
Маршрутизация в app.coffee
$stateProvider
.state 'feed',
abstract: true
url: '/'
templateUrl: 'views/feed.html'
controller: 'FeedController'
resolve: (a bunch of them :P)
.state 'feed.timeline',
url: ''
views:
'timeline':
templateUrl: 'views/partials/feed/timeline.html'
controller: 'FeedTimelineController'
.state 'feed.trending',
url: ''
views:
'trending':
templateUrl: 'views/partials/feed/trending.html'
controller: 'FeedTrendingController'
заполнители в index.html:
<div class="container">
<div ui-view></div>
</div>
в ‘views/feed.html ‘:
<div ui-view="trending"></div>
<div ui-view="timeline"></div>
Я действительно ценю любую помощь, перепробовал все, что мог придумать, и чувствую себя измотанным после нескольких часов поиска в вики, группах, Google, stackoverflow… Спасибо!
Комментарии:
1. Вы пытались удалить свойство url в своих дочерних состояниях или сделать их разными? Например, / trending, / timeline
2. @rawphl это не было бы желаемым результатом, на самом деле это был просто случай дочернего состояния с двумя представлениями вместо двух отдельных дочерних состояний. Но большое спасибо за ваше время! Ценю это
3. Вам нужны URL-адреса в ваших дочерних состояниях. Обычно вы оставляете один из URL-адресов дочернего состояния пустым, если родительское состояние является абстрактным состоянием, таким образом, когда вы переходите к родительскому, по умолчанию для дочернего состояния используется пустой URL. Но да, похоже, вам, вероятно, нужны подвиды, а не отдельные дочерние состояния.
Ответ №1:
Я не уверен, что вы правильно понимаете ui-router. Состояние в основном соответствует URL (за исключением случаев, когда оно абстрактное). Я предполагаю, что вы хотите иметь одно состояние, которое помещает данные в два подвида вашего состояния ‘feed’.
$stateProvider
.state 'feed',
abstract: true
url: '/'
templateUrl: 'views/feed.html'
controller: 'FeedController'
resolve: (a bunch of them :P)
.state 'feed.index',
url: ''
views:
'timeline@feed':
templateUrl: 'views/partials/feed/timeline.html'
controller: 'FeedTimelineController'
'trending@feed':
templateUrl: 'views/partials/feed/trending.html'
controller: 'FeedTrendingController'
Вам не обязательно выбирать ‘feed.index’ в качестве имени, но оно должно начинаться с ‘feed.’, так что это дочернее состояние.
Комментарии:
1. большое вам спасибо! Я чувствую себя таким глупым, глядя на решение прямо сейчас. Думаю, мне следует прекратить кодирование на ночь. Еще раз спасибо, чувак