Задачу с проверкой авторизован пользователь или нет решил следующим образом:
var isAuth;
routerApp.factory('authFactory',['dataService',function(dataService){
var authFactory={};
var a;
authFactory.isLogin=function(){ ref.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
a=true;
} else {
// No user is signed in.
a=false;
}
console.log(a+" ds "+dataService.isAuthed)
});
return a;
}
return authFactory;
}]);
routerApp.run(['authFactory',function(authFactory){
isAuth=authFactory.isLogin();
}]);
Осталась последняя проблема... скрывать не нужные элементы.. ng-show не срабатывает, точнее срабатывает но как-то не так).
<body ng-app="routerApp">
<!-- NAVIGATION -->
<div class="container">
<section ng-controller="CheckCtrl as Chkctrl" >
<nav class="navbar navbar-inverse" role="navigation" >
<div class="navbar-header" >
<a class="navbar-brand" ui-sref="#">Router + {{isAuth.isAuthed}}</a>
</div>
<ul class="nav navbar-nav">
<li ng-show="btnShow()"><a ui-sref="home">Home</a></li>
<li ng-show="!btnShow()"><a ui-sref="login">Login</a></li>
<li ng-show="btnShow()"><a ui-sref="logout">Logout</a></li>
<li><a ui-sref="auth">Auth</a></li>
<li><a ui-sref="check">Check</a></li>
</ul>
</nav>
<div >
<button type="submit" class="btn btn-default" ng-click="btnShow()">ВХОД</button>
<h2 ng-show="!btnShow()">Please Login {{btnShow()}} </h2>
</div>
</section>
код контроллера:routerApp.controller('CheckCtrl',['$scope','isShow','dataService',function($scope,isShow,dataService){
console.log('3:In CheckCtrl');
$scope.isAuth=dataService;
var user = firebase.auth().currentUser;
//console.log(user.uid);
console.log(dataService.isAuthed);
this.btnShow=function(){
console.log("in this "+isShow.checkAuth());
return isShow;
}
$scope.btnShow=function(){
console.log("in scope "+isShow.checkAuth());
return isShow;
}
}]);
модуль isShow возвращает правильное значение, в консоль тоже выводиться верное значение...
Но ng-show отрабатывает всегда как TRUE.
Не могу понять почему...
UPD:
Вопрос решил! Проблема была в
return isShow
нужно было возвращать
return isShow.checkAuth()