로그인 페이지에서 설정 페이지로 첫 번째 사용자에게 일부 설정 작업을 지시하려고합니다. (기존 사용자 인 경우 평소와 같이 홈페이지로 이동합니다), 처음 사용자 인 경우 해당 설정을 완료하지 않으면 페이지의 다른 모든 링크를 비활성화 할 수 있습니다. 여기에 그것을하려는 나의 시도이지만, 어떤 이유로 작동하지 않습니다. 제발 저를 지적 해 주시겠습니까? 고마워. 당신이 볼 수 있듯이이 새로운 사용자 인 경우angularJS에서 페이지를 리디렉션하고 다른 라우터를 비활성화하는 방법은 무엇입니까?
angular.module('ecom').config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
var expenseModalInstance;
$urlRouterProvider.otherwise("/home");
$stateProvider.state('home', {
url: '/home',
templateUrl: 'home/home.html'
}).state('reports', {
url: '/reports',
templateUrl: 'submitter/reports/report-list.html'
}).state('ebin', {
url: '/ebin',
templateUrl: 'submitter/ebin/ebin-expense-list.html'
})..state('accountsetting', {
url: '/account',
templateUrl: 'settings/settings.html'
}).state('accountsetting.security', {
url: '/security',
templateUrl: 'settings/security/security.html',
resolve:{
userInfor: ['$stateParams', 'userinfoservice', function($stateParams, userinfoservice){
var isFirstTime;
if ($stateParams.rid) {
userinfoservice.getUserinfo($stateParams.rid).then(function(data) {
isFirstTime = data.isFirstTimeLogin;
});
}
return isFirstTime;
}]
}
}).run(['$state','$rootScope', function($state,$rootScope) {
// var isFirstTimeUser = false;
// userinforservice.getUserInformation().then(function(data){
// isFirstTimeUser = data.isFirstTimeUser;
// $rootScope.$broadcast('session:resolved', isFirstTimeUser);
// });
var isFirstTimeUser = true;
$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
event.preventDefault();
if(isFirstTimeUser){
$state.go('accountsetting');
}else{
$state.go('home');
}
});
}]);
, 내가 accountsetting.security에 걸릴 것입니다, 내가 뭔가를 할 것, 그것이 사실 반환 isFirstTime 경우,이 사용자 정보를 얻기 위해 서버를 호출하는 결의를 가지고 보안 컨트롤러를 설정하고 또한 보고서, ebin 등 다른 모든 라우터를 비활성화해야합니다. 그것을 할 수있는 방법입니까? 이 일을 끝내기위한 좋은 아이디어가 있습니까?
안녕하세요, 고마워! 그것은 나에게 아이디어를 줬다, 내가 시험을 줘 보자! – linyuanxie
콘솔에서 다음과 같은 오류가 발생했습니다. angular.js : 11706RangeError : 최대 호출 스택 크기를 초과했습니다. 방금 코드를 업데이트했습니다. – linyuanxie
물론 무한 루프를 작성했기 때문에 오류가 발생합니다. '$ state.go'는 매번'$ stateChangeStart' 이벤트를 트리거 할 것이기 때문에 동일한 리스너를 계속해서 반복 실행합니다. isFirstTime이고 nextState.name이 'accountsetting.security'가 아닌 경우에만 'accountsetting.security'로 리디렉션해야합니다. – frankies