AngularJS+;Firebase ng show不';行不通
我不是angularjs和firebase的专家,但我编写了这段短代码,我无法解决为什么不工作 我需要测试用户是否已登录(使用firebase身份验证),如果用户已登录,我希望显示'div'元素。如果用户未登录,则应隐藏“div” 我的html代码如下所示: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
<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
变量的名称,以查看它是否有效。不,这是它唯一的位置。是的,这可能也有效,问题已解决:-)谢谢。是的,这可能也有效,问题已解决:-)谢谢。