具有嵌套状态的角度ui-router和后退按钮

时间:2016-05-14 15:19:46

标签: javascript angularjs angular-ui-router

我在嵌套状态,解析和浏览器后退按钮上遇到了不好的时间。 在我的状态配置下,它由一个抽象状态和2个子状态组成,一个用于查看配置文件, 一个保留它。通常的流程是打开配置文件页面,然后单击某个链接并打开请求页面;这很好用。但是,如果单击 profile-request 页面上的浏览器后退按钮,则会执行 ProfileViewController ,但不会解析profileData。 有没有办法重新加载以前的视图(无需再次渲染)或在执行控制器之前强制执行promise解析?

$stateProvider
  .state('public', {
    abstract: true,
    templateUrl: 'app/public.html'
})
.state('public.profile-view', {
    url: '/profile/:slug',
    templateUrl: 'app/profile/profile.view.html',
    controller: 'ProfileViewController',
    controllerAs : 'vm',
    resolve: {
      profileData: function($stateParams, Profiles) {
        return Profiles.query({ slug: $stateParams.slug });
      }
    }
})
.state('public.profile-request', {
    url: '/profile/request/:slug',
    templateUrl: 'app/profile/profile.request.html',
    controllerAs: 'vm',
    controller: 'ProfileRequestController',
    resolve: {
      profileData: function($stateParams, Profiles) {
        return Profiles.query({ slug: $stateParams.slug });
      }
    }
})

1 个答案:

答案 0 :(得分:0)

您是否尝试在Profiles中缓存profileData,然后在ProfileViewController中尝试获取缓存数据(如果存在)。

另一个选择是将profileData存储在$ rootScope中。