我有一个问题:当我在某个页面时,我想返回上一页。我使用$routeProvider
。我怎样才能阅读上一个网址?
我尝试在我的控制器中使用此代码但不起作用...
angular.module.controller('myController',
function($scope, $routeParams, $http, $location, $rootScope) {
$rootScope.$on("$routeChangeSuccess",
function (event, current, previous, rejection) {
console.log(previous);
$location.path('PREVIOUS PATH');
});
});
我如何阅读上一条路径?谢谢!
答案 0 :(得分:3)
我不完全确定,你想要实现的目标。所以我建议,在你走自己的路之前检查一下:
How to implement history.back() in angular.js
但是,如果您想知道如何使用angular和UI-Router保持最后一个状态,我们可以使用服务来实现。有一些天真的实现跟踪最后状态(不挑战history.back())
服务定义:
.factory('PreviousState', ['$rootScope', '$state',
function ($rootScope, $state) {
var lastHref = "/home",
lastStateName = "home",
lastParams = {};
$rootScope.$on("$stateChangeSuccess", function (event, toState, toParams
, fromState, fromParams) {
lastStateName = fromState.name;
lastParams = fromParams;
lastHref = $state.href(lastStateName, lastParams)
})
return {
getLastHref: function (){ return lastHref ; },
goToLastState: function (){ return $state.go(lastStateName, lastParams); },
}
}])
所以我们只听取$stateChangeSuccess并跟踪上一个state
名称及其 $stateParams
。
我们可以将服务注入所有范围:
.run(['$rootScope', 'PreviousState',
function ($rootScope, PreviousState) {
$rootScope.PreviousState = PreviousState;
}])
我们可以将它用作点击或href:
<button ng-click="PreviousState.goToLastState()">go back</button>
<a ng-href="#{{PreviousState.getLastHref()}}" > go to last href</a>
中查看