2017-01-17 7 views
4

私は現在のユーザーがルートにアクセスできるかどうかをチェックするサービスを持っています。 私はそのサービスを解決の一環として呼びたいので、ユーザーがアクセス権を持たない場合はビューがロードされません。しかし、resolve関数内では、$ state依存関係にはまだルータの実際の状態が含まれていません。解決機能内で現在のルートを取得する方法は?

.state('home', { 
    url: '/home', 
    templateUrl: 'app/home.html', 
    controller: 'HomeController', 
    controllerAs: 'main', 
    resolve: { 
    allowed: function(auth, $state) { 
     return auth.isAllowed($state.current.name); 
    } 
    }, 
}) 

...ただし、$state.current.nameは使用されている時点では空です。州の名前(「自宅」)を渡すにはどうすればよいですか?

答えて

4

はUIルータ1.0+の場合

resolve: { 
    allowed: function(auth) { 
     return auth.isAllowed(this.self.name); 
    } 
}, 
0

で試してみてください(これへの移行が進行中である)将来の状態へのアクセスを得るために$状態$を注入します。しかし、resolveが親または抽象状態にある場合、その抽象状態を指し示し、遷移先の子状態を指すことはありません。

resolve: { 
    allowed: function($state$) { 
    ... 
    } 
} 
関連する問題