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

时间:2016-07-22 09:59:33

标签: javascript html angularjs

我想只在登录成功时打开页面, 我在控制器中使用了标志,我想在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,反之亦然。 任何帮助表示赞赏。 感谢

3 个答案:

答案 0 :(得分: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;
        };

答案 1 :(得分: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  : ''
    })  
})

答案 2 :(得分:0)

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