有同样的问题。希望对你有帮助How do I get the Back Button to work with an AngularJS ui-router state machine?
这对我来说有点难,似乎必须有一个更简单的解决方案
编辑:
我做到了。
首先你需要你的旧状态(我们也有本地存储的包装器,所以你应该改变方法)。
angular
.module('app')
.run(appRunFunction);
appRunFunction.$inject = ['$rootScope', 'localstorage'];
function appRunFunction($rootScope, localstorage) {
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParam, fromState, fromParam) {
localstorage.setValue('lastState', fromState.name);
});
};
我们还编写了一项服务,在将您的下一个常规状态与上一个常规状态进行比较后,从抽象状态重定向到常规状态
angular
.module('app.services')
.factory('states', states);
states.$inject = ['$state', 'localstorage'];
function states($state, localstorage) {
var service = {reloadWithParam: reloadWithParam};
return service;
function reloadWithParam(param, value) {
var fromState = localstorage.getValue('lastState') + '.' + localstorage.getValue('lastPage');
var toState = $state.current.name + '.' + value;
var paramObject = {};
paramObject[param] = value;
if (fromState === toState) {
window.history.go(-1);
} else {
$state.go($state.current, paramObject, { notify: false});
localstorage.setValue('lastPage', value);
}
}
}