AngularJS ui.router,从子状态更改为父级,无重新加载

时间:2015-09-02 14:07:53

标签: javascript angularjs angular-ui-router

有类似的问题,但没有关于这个具体案例。

我有一个导航栏,用户可以转到状态postsnotifications。在帖子状态下,您可以点击帖子并转到posts.details。通知状态相同。

postsposts.detail共享控制器和模板。

什么有用:navbar->posts,然后点击帖子,用户登陆posts.details,再次navbar->posts,用户看到最后x个帖子。

不起作用:navbar->notifications,点击通知(来自帖子),用户登陆posts.detail。到目前为止还好。现在点击navbar->posts,控制器不会重新加载。

这里有一些代码片段:

route.js

   .state('posts', {
      url: '/',
      templateUrl: 'client/Posts/posts.ng.html',
      controller: 'PostsCtrl',
      resolve: {
        'subscribtion': ['speakLocalData', function(speakLocalData) {
          return speakLocalData.subscribeAll();
        }]
      }
    })
  .state('posts.detail', {
      url: 'posts/:id',
      templateUrl: 'client/Posts/posts.ng.html',
      controller: 'PostsCtrl',
      resolve: {
        'currentUser': ['$meteor', function($meteor) {
          return $meteor.requireUser();
        }]
      }
    })

navbar.ng.html

<li ui-sref-active="active">
    <a ui-sref="posts">
      <span class="glyphicon glyphicon-home"></span>
    </a>
  </li>

    <li ui-sref-active="active" ng-show="$root.currentUser">
        <div class="noti_bubble" ng-show="notiCounter>0">{{ notiCounter }}</div>
        <a ui-sref="notifications">
        <span class="glyphicon glyphicon-bell"></span>
      </a>
  </li>

有一个实时版here。使用用户名登录:demo,密码:demo123

源代码的Github存储库:here

1 个答案:

答案 0 :(得分:1)

根据documentation,您可以使用ui-sref-opts指令在更改状态时重新加载控制器:

<a ui-sref="notifications" ui-sref-opts="{reload: true}">...</a>