Я хочу открывать страницы только при успешном входе в систему, я использовал флаг в контроллере, который также хочу показать в 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 и наоборот. Любая помощь приветствуется. благодаря
Существует много способов сделать это, вы можете использовать $ window.sessionStorage, $ rootScope, как упоминалось выше, и, если это возможно, использовать Сервис при работе с контроллерами, прежде чем изменять свое состояние/местоположение.
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 : ''
})
})
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;
};
resolve
в вашей конфигурации маршрутизации ...