我想知道Angular中是否有办法刷新单个页面应用程序并正确恢复到以前的状态?我使用ui-router
(版本0.2.15)来定义不同的状态。
目前,我使用ngStorage
存储州名,并将$state.go(last_stored_state_name)
放在首先加载的状态的控制器中。这样我就可以在刷新前进入状态,但问题是我可以在$state.go(last_stored_state_name)
运行之前看到第一个状态的视图。
任何人都可以告诉我如何将第一个国家的观点直接推向所需的状态吗?
答案 0 :(得分:0)
试试这个:
$state.go($state.current, {}, {reload: true});
答案 1 :(得分:0)
创建一个控制器,并在ng-controller
标记之类的任何顶级元素上添加<body>
,以便其范围在整个应用程序和该控制器中可用,如下所示:
// Event listener for state change.
$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState) {
if (last_stored_state_name && isPageRefresh) {
// prevent execution of current state and navigate to last saved state
event.preventDefault();
$state.go(last_stored_state_name);
return;
}
});
因此您无需在控制器中执行$state.go(last_stored_state_name);
。这样,您就不会看到第一个状态。
您可以使用任何类型的检查来计算变量isPageRefresh
,例如检查fromState
是否为空或设置本地存储变量或设置全局javascript变量。