UI-Router Child不替换模板

时间:2014-05-29 06:20:41

标签: angularjs angular-ui-router

我的<div ui-view>文件中有index.html。这是我的5个州:

$stateProvider
  .state('front', {
     url: '^',
     templateUrl: 'templates/front.html'
  })
  .state('member', {
     url: '/member',
     templateUrl: 'templates/member.html'
  })
  .state('cpanel', {
     url: '^/cpanel',
     templateUrl: 'templates/cpanel.html'
  })
  .state('cpanel.users', {
     url: '/users',
     templateUrl: 'templates/users.html'
  })
  .state('cpanel.users.edit', {
     url: '/:id',
     templateUrl: 'templates/users.edit.html'
  })

我只想关注/cpanel部分:

cpanel.html

<!-- Header -->
<!-- Common divs -->
<div ui-view></div>

users.html

<div ng-repeat="user in users" ng-click="edit()">
   <div ng-bind="user.name"></div>
   ...
</div>

例如,当我重定向到cpanel/users/1时,我仍会看到users.html页面,users.edit.html中的内容不会替换users.html中的旧列表

我做错了什么?

1 个答案:

答案 0 :(得分:0)

cpanel.users.edit cpanel.users 的子范围,但 templates / users.html 没有ui-view,所以没有将会呈现。 cpanel.users.edit 也无法替换 cpanel.users ,因为它是它的子范围。

一种解决方案是使 cpanel.users 使用模板进行抽象:

<div ui-view></div>

并添加 cpanel.users.list 以实际列出用户。