【发布时间】:2017-01-29 00:25:05
【问题描述】:
我正在使用 AngularJS 和 Firebase 制作登录页面。到目前为止,我的大部分代码都运行良好,直到我尝试添加通知。当 ng-show 说应该显示时,似乎不会显示。需要两次点击才能工作,这绝不应该是这种情况。 截至目前,我有以下按钮。
<button ng-click="cna()" type="button" class="btn btn-success ban block" style="width:50%">Create New Account</button>
cna() 函数是创建新帐户函数。这看起来像:
create($scope.email, $scope.password);
create() 方法如下所示:
function create(email, password) {
firebase.auth().createUserWithEmailAndPassword(email,password).catch(function(error){
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode+":"+errorMessage);
$scope.failure = true;
$scope.success = false;
});
firebase.auth().onAuthStateChanged(function(user){
if(user){
$scope.success = true;
$scope.failure = false;
}else{}
});
}
最后,我有两个通知应该在 $scope.success 或 $scope.failure 设置为 true 时显示。但是,这只适用于第二次点击,它应该会失败。所以,我的问题是我的帐户正在创建中,但是直到第二次单击才通知我的 GUI。根本不需要第二次点击就可以工作。
最后,我的通知代码如下:
<div class="alert alert-success" ng-show="success"><strong>Success!</strong> You made an account!</div>
<div class="alert alert-danger" ng-show="failure"><strong>Sorry!</strong> This user already exists...</div>
我浏览了整个网络,到目前为止,我发现的只是一个叫做 AngularFire 的东西,它可能是一个不错的选择,但我不确定。如果有人能帮我解决我的问题,我将不胜感激!
【问题讨论】:
-
开始放一些 console.logs() 在那里。我向您保证 ng-show 正在按预期工作,并且您的代码不起作用
-
除非您使用 angularFire...您正在更新 Angular 上下文之外的范围,并且需要使用
$apply()告诉 Angular 运行摘要
标签: angularjs firebase firebase-authentication