如何在angularjs中从app.js内部的控制器定义变量

How to define a variable from controller inside app.js in angularjs?

本文关键字:内部 控制器 定义 变量 js app angularjs 中从      更新时间:2023-09-26

我只想在登录成功时打开页面,我在控制器中使用了flag,我也想在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  : ''
        })  
    })
} 

如何将我的变量从controller定义到app.js中,以便将我的标志从true更改为false,反之亦然。感谢您的帮助。感谢

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;
        };

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  : ''
    })  
})

有很多方法可以做到这一点,您可以使用$window.sessionStorage和$rootScope,如果可能的话,在更改状态/位置之前,在处理控制器时使用Service。