鍍金池/ 問答/HTML/ 跳轉(zhuǎn)外部鏈接,angular ui-router disable問題

跳轉(zhuǎn)外部鏈接,angular ui-router disable問題

公司現(xiàn)在有一個業(yè)務場景:當輸入itil網(wǎng)址時,先判斷是否登錄了,沒有登錄,則需要跳轉(zhuǎn)到一個外部鏈接登錄入口進行登錄。

現(xiàn)在問題,出來了!

1 當跳轉(zhuǎn)到外部登錄鏈接(新開了一個tab頁)。
2 此時,ui-router,會將跳轉(zhuǎn)的外部鏈接,解析為一個錯誤路由
3 當跳轉(zhuǎn)錯誤路由,會自動重定向到home頁
4.而重定向home頁,因為還未登錄,所以又會跳轉(zhuǎn)到外部登錄鏈接

會重復剛才的判斷過程,是否登錄,沒有登錄,跳轉(zhuǎn)到外部鏈接。。。,周而復始,死循環(huán)。

 $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
        //正常路由跳轉(zhuǎn)  判斷
        if(toState.name == 'login') {
            return;
        }
        if(toState.name != 'login') {
            var currentUrl = window.location.href;
            var currentState=toState.name;
            
            //正常情況下,每一次跳轉(zhuǎn)路由,都要判斷用戶信息是否有效
            try{
                //1.判斷用戶信息是否存在 及 有效
                var userInfo=JSON.parse($cookies.get("userInfo"));
                $rootScope.loginCode=userInfo.Code;
            }catch(err){
                console.log(err);
                event.preventDefault();
     
                 window.open="http://helloworld:6688/hello/control/main?url=http://localhost:8889/#!/app/home";//跳轉(zhuǎn)到外部登錄鏈接

            }
        }
    });

網(wǎng)上查的各種資料,都看了下,都無法解決 在跳轉(zhuǎn)了外部鏈接后,ui-router不要動作(不要將外部鏈接解析為錯誤路由,進而跳轉(zhuǎn)到home頁,進而引發(fā)死循環(huán))。

通過在JS在頁面append進a標簽元素,然后觸發(fā)click事件(強制模擬用戶行為,跳轉(zhuǎn)到外部鏈接),一樣無法解決標紅 問題。

希望熟悉ui-router原理的大神 或者 之前 有踩過坑的同學,能幫忙分析下,謝謝!

回答
編輯回答
小眼睛

問題解決了!將catch 語句中的event.preventDefault(); 刪除掉,可以解決。具體原理,還是看ui-router源碼!后期會更新相關文檔!

2018年8月3日 11:25