2016-07-22 33 views
0

我只想在登录成功时打开页面, 我在控制器中使用了标志,我也想在app.js中显示。如何从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,这样我可以从真正改变我的标志设置为false反之亦然。 任何帮助表示赞赏。 感谢

+1

不知道你正在努力实现......如果验证客户端使用'resolve'财产在你的路由配置是什么? – kukkuz

回答

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

如果我有多个页面登录后,并在你的代码的用户展示什么都可以还是去“/家”在浏览器中输入地址。 –

+0

@SanketDhoble检查我的更新答案 –

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

有很多方法可以做到这一点,你可以用$ window.sessionStorage,$ rootScope以上,如果提到可能使用服务时对付你改变你的状态/位置之前控制器。

相关问题