質問

ホットタオルアンギュラライブラリを使用しています( https://github.com/johnpapa/ hottowel-angular-bower )上級開発者から継承したプロジェクトについて

auth0の認証ライブラリを角度用に組み込んでいます。

認証されたユーザーにいくつかの経路を制限する必要があります。それをするために、私はいくつかのルートプロパティを設定します。
認証されていないユーザーに制限されているルートのisLogin: true
認証を必要としていないルート、およびそうでないユーザーの反対側のrequiresLogin: true。各ランスルーでこれらのプロパティを確認するには、$rootScope.$on('$routeChangeStart' function())を使用します。

app.run(function ($rootScope, $location, auth, common, config) {
    var getLogFn = common.logger.getLogFn,
        log      = getLogFn('auth handle'),
        events   = config.events;

    $rootScope.$on('$routeChangeSuccess', function (e, nextRoute, currentRoute) {
        if (nextRoute.$$route && nextRoute.$$route.settings && nextRoute.$$route.settings.requiresLogin) {
            if (!auth.isAuthenticated) {
                $location.path('/login');
                log('User not authenticated');
            }
        }
        if (nextRoute.$$route && nextRoute.$$route.settings && nextRoute.$$route.settings.isLogin) {
            if (auth.isAuthenticated) {
                $location.path('/');
                log('User is authenticated');
            }
        }
    })
});
.

今、これがホットタオルに含まれるスピナー機能を妨害しているようです。 Sherl.jsでは、次のものがあります。

$rootScope.$on('$routeChangeStart',
    function (event, next, current) { toggleSpinner(true); }
);

$rootScope.$on(events.controllerActivateSuccess,
    function (data) { toggleSpinner(false); }
);

$rootScope.$on(events.spinnerToggle,
    function (data) { toggleSpinner(data.show); }
);
.

スピナーが回転を止めないこと(例えば、コントローラが起動されリセットされているため、vm.isbusy= true)、このようにしてこれを取り組むのでしょうか。

役に立ちましたか?

解決

1つの考えは、未許可のアクセスが行われるときに通知するためにイベント($ブロードキャスト)を使用することができ、それがスピナーをオフにするコントローラによって受信されることです。

他のヒント

私はあなたのコードを非常に長く研究していませんが、Spinnerを停止するために$routeChangeSuccessを使用してはいけませんか?

$scope.isViewLoading = false;
$scope.$on('$routeChangeStart', function() {
    $scope.isViewLoading = true;
});
$scope.$on('$routeChangeSuccess', function() {
    $scope.isViewLoading = false;
}); 
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top