AngularJS。页面重新加载后保持状态

AngularJS. Retain state after page reload

我正在使用启用了 html5Mode 的 UI 路由器,状态是从 JSON 加载的。

F5 后或粘贴时的预期行为 URL 分别是重新加载当前状态或导航到所述状态,而不是加载初始应用程序状态。

例如root/parent/child 被重定向到 root/。

顺便说一句,使用 ui-sref 导航效果很好。

那么,如何在页面重新加载后保持状态?

请问您可以 post 您的代码吗?特别是 $stateProvider。 这是一个正确的 $stateProvider 示例,它工作正常:

$stateProvider.state('main.admin', {
    url: '/admin',
    resolve: {},
    views: {
        'main-content@main': {
            controller: 'AdminController as admin',
            templateUrl: 'main/admin/admin.tpl.html'
        }
    }
});

看起来有点老套,但现在可以用了。

app.run(['$location', '$state', function ($location, $state) {
  function stateFromUrl () {
    var path = $location.path(),
        hash = $location.hash();

    // do JSON states map parsing and find a corresponding to the URL state

    return state;
  }

  if (stateFromUrl) {
    $state.go(stateFromUrl);
  } else {
    $state.go('home'); // initial state
  }
}]);

为了在重新加载应用程序后保留页面状态,应提供一个 url 表示状态。当你包含 ui-route 模块时,url 将被解析并发送到相应的状态。在大多数情况下,您不需要手动解析 url,ui-route 天生就是这样做的。