Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS+;Firebase ng show不';行不通_Angularjs_Firebase_Ng Show - Fatal编程技术网

AngularJS+;Firebase ng show不';行不通

AngularJS+;Firebase ng show不';行不通,angularjs,firebase,ng-show,Angularjs,Firebase,Ng Show,我不是angularjs和firebase的专家,但我编写了这段短代码,我无法解决为什么不工作 我需要测试用户是否已登录(使用firebase身份验证),如果用户已登录,我希望显示'div'元素。如果用户未登录,则应隐藏“div” 我的html代码如下所示: <body ng-app="myApp" ng-controller="myCtrl"> <div class="memberonly" ng-show="loggedIn"> <h1>T

我不是angularjs和firebase的专家,但我编写了这段短代码,我无法解决为什么不工作

我需要测试用户是否已登录(使用firebase身份验证),如果用户已登录,我希望显示'div'元素。如果用户未登录,则应隐藏“div”

我的html代码如下所示:

<body ng-app="myApp" ng-controller="myCtrl">
  <div class="memberonly" ng-show="loggedIn">
      <h1>This is visible only for logged in user.</h1>
  </div>
<body>

这仅对已登录的用户可见。
脚本如下:

<script>
var app = angular.module('myApp', ['ngRoute']);

app.controller('myCtrl', function($scope) {
  firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    console.log('user logged in.');
    $scope.email = user.email;
    console.log($scope.email);
    $scope.loggedIn = true;
    console.log('$scope.loggedIn: ', $scope.loggedIn);
  } else {
    // No user is signed in.
    console.log('no user logged in.');
    $scope.loggedIn = false;
    console.log('$scope.loggedIn: ', $scope.loggedIn);
  }
});
});
</script>

var-app=angular.module('myApp',['ngRoute']);
应用程序控制器('myCtrl',函数($scope){
firebase.auth().onAuthStateChanged(函数(用户){
如果(用户){
//用户已登录。
log(“用户登录”);
$scope.email=user.email;
log($scope.email);
$scope.loggedIn=true;
log(“$scope.loggedIn:”,$scope.loggedIn);
}否则{
//没有用户登录。
log('没有用户登录');
$scope.loggedIn=false;
log(“$scope.loggedIn:”,$scope.loggedIn);
}
});
});
在控制台中,我可以看到正确的值,但ng show仍然不起作用。 我看到用户是否登录,我看到他的电子邮件,loggedIn设置为“true”。 有人能帮忙吗

非常感谢您的帮助。

使用
$scope.$apply()
在为
$scope.loggedIn
赋值后,它应该可以工作。

使用
$scope.$apply()
在为
$scope.loggedIn
赋值后,它应该可以工作。

尝试以下操作:

  if (user) {
    // User is signed in.
    console.log('user logged in.');
    $scope.email = user.email;
    console.log($scope.email);
    $scope.$apply(function() {
        $scope.loggedIn = true;
    })
    console.log('$scope.loggedIn: ', $scope.loggedIn);
  } else {
    // No user is signed in.
    console.log('no user logged in.');
    $scope.$apply(function() {
        $scope.loggedIn = false;
    })
    console.log('$scope.loggedIn: ', $scope.loggedIn);
  }
请尝试以下操作:

  if (user) {
    // User is signed in.
    console.log('user logged in.');
    $scope.email = user.email;
    console.log($scope.email);
    $scope.$apply(function() {
        $scope.loggedIn = true;
    })
    console.log('$scope.loggedIn: ', $scope.loggedIn);
  } else {
    // No user is signed in.
    console.log('no user logged in.');
    $scope.$apply(function() {
        $scope.loggedIn = false;
    })
    console.log('$scope.loggedIn: ', $scope.loggedIn);
  }

您的应用程序中是否有名为
loggedIn
$scope
变量?尝试更改您的
loggedIn
变量的名称,以查看其是否有效。不,这是唯一的位置。您的应用程序中是否有名为
loggedIn
$scope
变量?请尝试更改
loggedIn
变量的名称,以查看它是否有效。不,这是它唯一的位置。是的,这可能也有效,问题已解决:-)谢谢。是的,这可能也有效,问题已解决:-)谢谢。