2017-02-16 61 views
1

我正在使用角度1的ui-routers狀態定義的resolve屬性來提供返回承諾的函數。提供的功能應該檢查用戶是否被允許訪問狀態。ui-router狀態轉換到控制檯拒絕承諾的打印錯誤

如果返回的promise被拒絕,狀態轉換不會發生 - 正是我想實現的。此外,我可以收聽$stateChangeError活動以獲取有關拒絕的詳細信息。一切正常。

我的問題是,錯誤打印到控制檯,我想避免。

考慮這種狀態definiton:

$stateProvider.state({ 
    name: 'about', 
    url: '/about', 
    template: '<h3>Its the UI-Router hello world app!</h3>', 
    resolve: { 
     isAllowed:function(){ 
     return new Promise(function(resolve, reject){ 
      reject(new Error("not allowed")); 
     }); 
     } 
    } 
    }); 

這將導致以下錯誤打印到控制檯,無論何時訪問該狀態:

console error

請參見本Plunker的最低工作例。

有沒有什麼辦法擺脫控制檯錯誤,同時保持其餘的行爲?

+1

BTW u可以使用的'Promise.reject()',而不是新的承諾... –

回答

2

這可能是因爲您正在使用的angular-ui-router版本。嘗試This version (0.4.2)。你不會在這個版本中得到錯誤。

1

您可以使用另一種方法是這樣的:

$rootScope.$on('$stateChangeStart', function (evt, toState, 
toParams, fromState, fromParams, options) { 
    if(not_allowed) { 
     evt.preventDefault(); 
    } 
}