2016-10-05 21 views
2

内部の私はこのような角度UI-ルータを使用して、私のルートを設定している:

routes.$inject = ['$stateProvider']; 

export default function routes($stateProvider) { 
    $stateProvider 
    .state('the/route', { 
     url: '/the/route', 
     params: { 
      'permissions': 'TESTPERMISSION' 
     }, 
     views: { 
      ... 
     } 
    }) 
} 

と私は権限の要素にアクセスしたいですあなたが動作しないパラメータにアクセスする論理的な方法下の画像で見ることができるように

export default function locationChangeAuthInterceptor($rootScope, $state, $stateParams) { 
    $rootScope.$on('$locationChangeSuccess', (evt) => { 

     ... 

    }) 
} 

:次のようになりますインターセプタでのparams。私の試みの

If I console $state.params or $stateParams I get this

Several other console.logs

結果:

(1) $state StateService {router: UIRouter, invalidCallbacks: Array[0]} 
(2) $state.params StateParams {} 
    #: null 
    permissions: "TESTPERMISSION"__proto__: Object 
(3) $stateParams StateParams {} 
    #: null 
    permissions: "TESTPERMISSION" 
    __proto__: Object 
(4) $state.params.permissions => undefined 
(5) $stateParams.permissions => undefined 
(6) $state.params["permissions"] => undefined 
(7) $stateParams["permissions"] => undefined 
(8) angular.isObject($state.params) => true 
(9) angular.isObject($stateParams) => true 
(10) $state.params.stateParams => undefined 
(11) $stateParams.stateParams => undefined 
(12) $stateParams.permissions => undefined 
(13) $stateParams[0] => undefined 
(14) $stateParams[1] => undefined 
(15) $state.params[0] => undefined 
(16) $state.params[1] => undefined 
(17) […$stateParams] => []length: 0__proto__: Array[0] 
(18) […$stateParams] => []length: 0__proto__: Array[0] 
(19) Object.keys($stateParams) => [] 
(20) Object.keys($state.params) => []length: 0__proto__: Array[0] 
(21) $stateParams.StateService => undefined 
(22) $state.params.StateService => undefined 
(23) $stateParams["StateService"] => undefined 
(24) $state.get("permissions") => null 
+0

こんにちはエリック、関連するエラーメッセージを**プレーンテキスト**として含めることができますか?してください –

+1

こんにちは!はい、「私の試行の結果」を追加しました。 – Eric

答えて

0

同様の問題を得ました。

私の推測では、$ locationChangeSuccessイベントが(Difference between $locationChangeStart, $routeChangeStart, and $stateChangeStartに基づいて)このシナリオでは避けるべきであるということで、$ stateChangeSuccess代わりに使用する必要があります。

$rootScope.$on('$stateChangeSuccess', function() { 
     if ($state.$current.self.scroll == 'bottom') 
      ; 
     else      
      $anchorScroll(); 
    }); 
関連する問題