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 天生就是这样做的。
我正在使用启用了 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 天生就是这样做的。