[英]AngularJs ui router can't go back when in a valid state
使用ui.router
導航時使用directive
返回時遇到麻煩。 據我所知,出現此問題的原因是應用程序的結構方式。 要識別無效的URL
(或狀態),我需要這樣做:
$urlRouterProvider.otherwise(function($injector) {
var $state = $injector.get('$state');
$state.go('erro');
});
因此,如果我嘗試訪問該URL: website.com/contacttt
(假設這是無效的url/state
),則ui.router
會將用戶重定向到錯誤狀態。
在那種狀態下,如果我嘗試使用goBack
directive
,則:
element.on('click', function() {
$window.history.back();
})
我將處於循環中,因為上一個歷史記錄是無效的歷史記錄。 我知道我可以使用$window.history.go(-2);
類的東西$window.history.go(-2);
但這也有一個怪異的行為,如果用戶按下前進按鈕,他們將再次回到無效狀態。
我希望能夠在整個應用程序中使用相同的指令,這是在多個視圖中提供的功能。
還有其他解決方法嗎?
您可以嘗試一下,雖然它並不完美,但是效果很好。
在您的.run()
在$states
更改時保存它們。
myApp.run(function ($rootScope) {
$rootScope.previousState;
$rootScope.currentState;
$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {
$rootScope.previousState = from.name;
$rootScope.currentState = to.name;
});
});
然后在您的錯誤視圖上添加帶有功能的按鈕。
$scope.back = function () {
if ($rootScope.previousState !== "") {
$state.go($rootScope.previousState);
} else {
//a default view to redirect in some cases this don't work
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.