簡體   English   中英

AngularJs ui路由器處於有效狀態時無法返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM