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

时间:2014-07-05 12:55:23

标签: javascript angularjs parent-child angular-ui-router nested-views

我在路由设置中首先放置的子状态是加载的状态。其他一切都很好。 Resolve依赖项按原样继承,呈现视图和控制器实例化。但第二个孩子的状态完全被忽视了......

在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&#39;:

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

我非常感谢任何帮助,尝试了我能想到的一切,并且在搜索wiki,群组,google,stackoverflow之后感到筋疲力尽......谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定你是否正确理解了ui-router。状态基本上对应于URL(除非是抽象的)。我想你想有一个状态将东西放入你的州'饲料'的两个子视图中。

$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”开头。所以这是一个儿童状态。