我有一个类似表单的页面,里面有一些数据。并且想要在用户单击浏览器的后退按钮时显示弹出/警告,询问“他们是想返回还是停留在同一页面上”。我正在使用angular-ui-router的$stateProvider
,并且只想将它绑定到一个状态/视图。
发布于 2015-09-15 03:49:24
以下是我的解决方案
app.run(function($rootScope, $location) {
$rootScope.$on('$locationChangeSuccess', function() {
if($rootScope.previousLocation == $location.path()) {
console.log("Back Button Pressed");
}
$rootScope.previousLocation = $rootScope.actualLocation;
$rootScope.actualLocation = $location.path();
});
});
发布于 2019-09-25 03:01:59
类似于syraz37的答案,但对于新的$transition
应用编程接口:
angular
.module('app')
.run(function($rootScope, $transitions) {
// Track "previous state" to be used elsewhere to determine if the user
// goes "back".
$transitions.onStart({}, (transition) => {
if ($rootScope._previousState === transition.$to().name) {
$rootScope._isPreviousState = true;
} else {
$rootScope._isPreviousState = false;
}
$rootScope._previousState = transition.$from().name;
});
});
然后,在任何控制器中,您都可以检查它是否被加载为“以前的状态”:
if ($rootScope._isPreviousState) {
// ...reload some aspect of the controller state...
}
这归因于ninjaPixel上面指出的警告,在那里你可以转到状态A,然后状态B,然后再转到状态A(都是向前的方向),它会认为用户已经“后退”了,但根据我们的需要,这是可行的。
https://stackoverflow.com/questions/29901409
复制相似问题