Domanda

Sto usando la biblioteca angolare del tovagliolo caldo ( https://github.com/johnpapa/ Hottowel-Angular-Bower ) su un progetto ho ereditato da uno sviluppatore anziano.

Sto anche incorporando la Biblioteca di autenticazione Auth0 per angolare.

Ho bisogno di limitare alcuni percorsi agli utenti autenticati. Per farlo, ho impostato alcune proprietà del percorso.
isLogin: true per rotte che è limitato a utenti non autenticati.
requiresLogin: true per i percorsi che necessitano di autenticazione e il contrario per coloro che non lo fanno. Per verificare queste proprietà su ogni rhlhrough, uso $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');
            }
        }
    })
});
.

Ora, sembra che questo interferisca con la funzionalità dello spinner inclusa con un tovagliolo caldo. In Shell.js Trovo quanto segue:

$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); }
);
.

Cosa succede è che lo spinner non smette mai di girare (ad esempio Vm.isbusy= true perché un controller non è mai attivato e resettato questo), come dovrei lavorare intorno a questo?

È stato utile?

Soluzione

Un'idea è che è possibile utilizzare un evento ($ Broadcast) per notificare quando viene effettuato l'accesso autorizzato dell'ONU è quindi ricevuto dal controller che spegne lo spinner.

Altri suggerimenti

Non ho studiato il tuo codice per molto tempo ma non dovresti usare $routeChangeSuccess per fermare lo spinner?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top