我想知道在Angular中是否有一种方法可以刷新单个页面应用程序并正确地返回到以前的状态?我使用ui-router (版本0.2.15)来定义不同的状态。
目前,我使用ngStorage存储状态名称,并将$state.go(last_stored_state_name)放在最先加载的状态的控制器中。这样,我就可以到达刷新前的状态,但问题是,在$state.go(last_stored_state_name)运行之前,我可以看到第一个状态的视图。
有谁能告诉我如何绕过第一个状态的视图直接转到所需的状态?
发布于 2016-04-17 15:45:16
创建一个控制器,并在任何顶级元素上使用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变量。
https://stackoverflow.com/questions/36673847
复制相似问题