Как определить переменную из контроллера внутри app.js в angularjs?

0

Я хочу открывать страницы только при успешном входе в систему, я использовал флаг в контроллере, который также хочу показать в app.js.

headerCtrl.js:

$scope.verifyOTP = function(mobileNumber,otpNumber) {
   $rootScope.UserAuthorised=false;
   $http.get($scope.url,config).success(function(data, status) {
       $rootScope.UserAuthorised=true;
       $window.alert("Login Successfully!! ");
       var Mypath = '/home' ;
       $location.path(Mypath); 
       $location.replace();  
   })
}

App.js:

if($rootScope.UserAuthorised==true){
    adminApp.config(function($routeProvider) {
    $routeProvider
        .when('/home', {
            templateUrl : 'pages/credentials/registration.html',
            controller  : ''
        })  
    })
} 

Как определить мою переменную из контроллера в app.js, чтобы я мог изменить свой флаг с true на false и наоборот. Любая помощь приветствуется. благодаря

  • 1
    не уверен, чего вы пытаетесь достичь ... если он аутентифицирует клиента, используйте свойство resolve в вашей конфигурации маршрутизации ...

3 ответа

0

Существует много способов сделать это, вы можете использовать $ window.sessionStorage, $ rootScope, как упоминалось выше, и, если это возможно, использовать Сервис при работе с контроллерами, прежде чем изменять свое состояние/местоположение.

0

HeaderCtrl.js

$rootScope.UserAuthorised=true;

App.js

adminApp.config(function($routeProvider) {
$routeProvider
    .when('/home', {
        templateUrl : function($rootScope){
            if ($rootScope.UserAuthorised){
                  return  'pages/credentials/registration.html';
                  }
                  else return '/login.html';
        }
        controller  : ''
    })  
})
0

headerCtrl.js

$scope.UserAuthorised=true; //remove this line and replace with following line
localStorage.setItem("UserAuthorised", "true");

App.js

$routeProvider.when('/secure', {templateUrl: '/secure.html', controller: 'Secure',resolve:{loggedIn:onlyLoggedIn}});

        var onlyLoggedIn = function ($location,$q) {
            var deferred = $q.defer();
            var isLogin = localStorage.getItem("UserAuthorised");
            if (isLogin == 'true') {
                deferred.resolve();
            } else {
                deferred.reject();
                $location.url('/login');
            }
            return deferred.promise;
        };
  • 0
    Что делать, если у меня есть несколько страниц для отображения после входа в систему, а также в вашем коде пользователь может перейти «/ home», набрав адрес в браузере.
  • 0
    @SanketDhoble проверьте мой обновленный ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню