尝试使用Firebase facebookconnect和AngularJS更新范围变量时出现问题

Trouble trying to update a scope variable using Firebase facebook connect and AngularJS

本文关键字:变量 范围 问题 更新 AngularJS Firebase facebookconnect      更新时间:2023-09-26

事情是这样的。。。

我正在使用AngularJS,并尝试使用firebird的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验证用户是否已登录,因此它为true或false,从而使一个div显示,另一个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;
    }
}); });

因此,当我点击login时,它会调用loginFacebook()函数,进行身份验证,然后返回我的用户信息,之后,我将logedUser变量更改为true,使用$scope.logedUser=true;

但在我的前端,它没有更改div,所以我创建了一个名为checkAuth()的函数,只是为了访问控制器,并制作了一个简单的console.log,在我执行该函数后,它会更改div,使登录div消失,注销div出现。。。

难道仅仅通过设置Firebase回调中的变量就不应该自动发生吗?

添加

$scope.$apply()

在FirebaseSimpleLogin回调函数中:)

通常,"angular的世界"之外的每个回调都需要这个来刷新其范围。