事情是这样的……
我正在使用 AngularJS,并尝试使用 firebird 的 facebook connect 来尝试一些事情。
一切都很好,它连接到我的 facebook,并返回我的帐户信息,但事情是这样的,因为我正在使用 angular,我将使用 ng-show 和 ng-hide 来显示和隐藏连接按钮对吗?
所以我有这样的结构:
<div ng-controller="LoginCtrl">
<div ng-hide="logedUser">
<a href="" ng-click="loginFacebook()">Login with Facebook</a>
<a href="" ng-click="checkAuth()">check</a>
</div>
<div ng-show="logedUser">
<a href="" ng-click="logout()">Logout</a>
</div>
</div>
logedUser 验证用户是否登录,因此它的真假,使一个 div 显示,另一个隐藏。
问题是当我尝试更新这个变量时,我认为我的角度控制器,这里是代码:
app.controller('LoginCtrl', function($scope) {
$scope.loginFacebook = function() {
auth.login('facebook', {
rememberMe: true,
scope: 'email,user_likes'
});
};
$scope.logout = function() {
auth.logout();
};
$scope.checkAuth = function() {
console.log($scope);
};
var loginRef = new Firebase('https://angulartodolist.firebaseIO.com/');
var auth = new FirebaseSimpleLogin(loginRef, function(error, user) {
if (error) {
// an error occurred while attempting login
console.log(error);
$scope.logedUser = false;
} else if (user) {
// user authenticated with Firebase
console.log(user);
$scope.logedUser = true;
} else {
// user is logged out
$scope.logedUser = false;
}
}); });
所以发生了什么,当我点击登录时,它调用 loginFacebook() 函数,它进行身份验证,然后返回我的用户信息,之后,我将 logedUser 变量更改为 true,使用 $scope.logedUser = true;
但是在我的前端它没有改变 div,所以我创建了一个名为 checkAuth() 的函数,只是为了访问控制器,并制作一个简单的 console.log,在我执行该函数后,它会更改 div,进行登录div 消失,注销 div 出现...
它不应该通过在 Firebase 的回调中设置变量来自动发生吗?