Angular UI Router只加载第一个声明的子状态

Angular UI Router only loads first declared child state

本文关键字:声明 状态 第一个 加载 UI Router Angular      更新时间:2023-09-26

我在路由设置中首先放置的子状态就是加载的状态。其他一切都很好。解析依赖被继承,视图被呈现,控制器被实例化。但是第二个子状态会被完全忽略…

Routing in 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>
在"视图/feed.html":

<div ui-view="trending"></div>
<div ui-view="timeline"></div>

我真的很感谢任何帮助,尝试了我能想到的一切,在几个小时搜索wiki, groups, google, stackoverflow后感到筋疲力尽…谢谢!

我不确定你是否正确理解了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 '开头。