2014-09-12 2 views
0

저는 각도 j에서 새롭습니다. 나는 인증을 원한다. 인증을 확인한 후에 만 ​​일부 페이지로 이동해야합니다. 내가 그 checkLogin 기능을했습니다. checkLogin 함수를 호출하는 동안 처리 시간이 필요합니다. true 인 경우 해당 페이지가 리디렉션됩니다. false 인 경우 동일한 페이지로 유지됩니다. 그러나 동시에 checkLogin 함수를 호출하는 동안 app.config 함수를 동시에 처리합니다. 나는 그것을 막을 필요가있다. chcklogin 이후에만 처리해야합니다.각도 js에서 비동기 처리를 피하는 방법

var app = angular.module('myApp', ['ngRoute', 'ngResource','ngCsv', 'ui', 'ngSanitize', 'ngQuickDate', 'ui.tree', 'blueimp.fileupload','mentio']); 
app.config(function($routeProvider) { 
$routeProvider 
    .when('/', { 
     templateUrl: 'app/views/login.html', 
     controller: 'LoginController', 
     title: 'Login' 
    }).when('/signup', { 
     templateUrl: 'app/views/signup.html', 
     controller: 'SignUpController', 
     title: 'Sign Up' 
    }).when('/dashboard', { 
     templateUrl: 'app/views/dashboard.html', 
     controller: 'DashboardController', 
     title: 'Dashboard'});}); 

app.run(function($rootScope, $location, DataService) { 
var unAuthenticatedPages = ["/", "/signup"]; 
var checkLogin = function() { 
    if (!$rootScope.isLoggedIn && unAuthenticatedPages.indexOf($location.path()) === -1) { 
     $location.path('/'); 
    } 
}; 
$rootScope.isLoggedIn = true; 
    DataService.getUserListById(1, function(user) { 
     $rootScope.user = user; 
}); 
$rootScope.$on('$locationChangeStart', checkLogin);}); 
+0

질문을 게시하기 전에 오타를 고려하십시오. –

답변

0

AngularJS와 함께 제공 주입이 같은 것을 사용할 수있는 약속 라이브러리 $ q를 내장 : 필요한 경우 당신은 또한 당신의 약속 변수를 반환 할 수 있습니다

var doSomething = function() { 
    var deferred = $q.defer(); 

    //do someething here, when you're ready resolve the deferred object 
    deferred.resolve(); 

    //this won't execute until deferred is resolved or rejected 
    return deferred.promise; 
}; 

. 다음을 할 수 있습니다

관련 문제