Я следую учебнику AngularFire по телефону thinkster. Служба $simpleLogin
была обесценена, поэтому я изменил код.Углеродный учебник по мыслителю io статус входа не обновлен
Фабрика:
app.factory('Auth', function ($firebaseSimpleLogin, FIREBASE_URL, $rootScope, $location){
var ref = new Firebase(FIREBASE_URL);
var Auth = {
register = function(){
//...
},
resolveUser = function(){
//...
},
signedIn = function(){
var authData = ref.getAuth();
if (authData) {
console.log("User is signed in");
return true;
} else {
console.log("User is not signed in");
return false;
}
}
Контроллер:
app.controller('NavCtrl', ['$scope', '$location', 'Post', 'Auth', function ($scope, $location, Post, Auth){
$scope.post = {url: 'http://', title: ''};
$scope.submitPost = function(){
Post.create($scope.post).then(function (ref){
$location.path('/posts/' + ref.name());
$scope.post = {url: 'http://', title: ''};
})
};
$scope.signedIn = Auth.signedIn();
$scope.logout = Auth.logout;
}]);
app.config(function($routeProvider){
$routeProvider
.when('/', {
templateUrl: 'views/posts.html',
controller: 'PostsCtrl'
})
.when('/posts/:postId', {
templateUrl: 'views/showpost.html',
controller: 'PostViewCtrl'
})
.when('/register', {
templateUrl: 'views/register.html',
controller: 'AuthCtrl',
resolve: {
user: function(Auth){
return Auth.signedIn();
}
}
})
.when('/login', {
templateUrl: 'views/login.html',
controller: 'AuthCtrl',
resolve: {
signedIn: function(Auth){
return Auth.signedIn();
}
}
})
.otherwise({
redirectTo: '/'
});
Соответствующая часть шаблона:
<ul class="nav navbar-nav navbar-right">
<li ng-show="signedIn">
<a ng-href="#" ng-click="logout()">Logout</a>
</li>
<li ng-hide="signedIn">
<a href="#/register">Register</a>
</li>
<li ng-hide="signedIn">
<a href="#/login">Login</a>
</li>
Проблема является signedIn
переменная не обновляется, когда я войдите в систему, поэтому ссылки регистрации и входа в систему по-прежнему отображаются пользователю во время выхода из системы l чернила не показаны.
спасибо за помощь, не знаю, как точно ее реализовать (я новичок), но достаточно, чтобы установить меня на правильный путь. Наконец, я обнаружил, что использование $ timeout с $ onAuth может привести к результату, который я хочу. – user2901633