1. ホーム
  2. angularjs

[解決済み] Angular JS $locationChangeStart 次の url ルートオブジェクトを取得する

2022-02-02 10:04:28

質問

ルートが変更されたときに、ルートがユーザーに対して認可されているかどうかをチェックしたいのですが、Angularアプリケーションに認可を実装しようとしています。私はと試してみました $routeChangeStart が、イベントを防ぐことができません。

私の現在のコードです。

$scope.$on('$routeChangeStart', function(event, next, current) {
        if(current_user.is_logged_in){
            var route_object = next.route_object;
            if(!(route_object.route_roles)){
                event.preventDefault();
            }
        }
    });

ここで、私の next オブジェクトに設定されている route_object を取得しています。 $routeProvider

var routes = object;
    app.config(function($routeProvider) {
                $routeProvider.when(url, {
                    templateUrl: "/users.html",
                    route_object: routes,
                    });
            });

routes は私の関数内で形成されるオブジェクトですが、私が $locationChangeStart 私はちょうど次のページと前のページのURLを取得しています。

ルートオブジェクト全体を取得するにはどうすればいいですか?

解決方法は?

ルートパラメータを $locationChangeStart イベントリスナーはこのようになります。

$scope.$on('$locationChangeStart', function(event, next, current) {
    if(current_user.is_logged_in){
        var route_object = ($route.routes[$location.path()]).route_object; //This is how you get it
        if(!(route_object.route_roles)){
            event.preventDefault();
        }
    }
});

そうすると、古典的なpreventDefaultメソッドが仕事をすることになります。以下は プランカー というようなことを書きました。