AngularFire(Angular+Firebase)身份验证错误延迟
AngularFire (Angular + Firebase) Authentication Error delay
我发现了一些奇怪的东西。请帮忙!
$scope.login = function() {
ref.authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(error, authData) {
if (error) {
console.log("Login Failed!", error);
$scope.message = error.toString();
} else {
$location.path('/meetings');
console.log("Authenticated successfully with payload:", authData);
}
});
} //login
这是一个登录功能,它运行得很好。然而,问题是我在提交登录信息后3-4秒就得到了error
。我注意到,在$scope.message
收到值后,我的{{message}}
不会立即更新。我认为Angular应该在它改变后立即显示这个值?
在我第二次点击后,我得到了错误显示。
这就是我打印值的地方:
<p class="error formerror" ng-show="message">{{message}}</p>
您正在调用authWithPassword
,它是Firebase常规JavaScript SDK的一部分。此API将启动身份验证过程,并在身份验证完成时调用您的函数。不幸的是,此时AngularJS不再知道您对$scope
进行了任何更新。
为了让AngularJS知道更新,请将代码封装在$timeout
调用中:
$scope.login = function() {
ref.authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(error, authData) {
$timeout(function() {
if (error) {
console.log("Login Failed!", error);
$scope.message = error.toString();
} else {
$location.path('/meetings');
console.log("Authenticated successfully with payload:", authData);
}
});
});
} //login
请注意,正是出于这个原因,AngularFire在其$firebaseAuth
服务中为这些身份验证功能提供了方便的包装。请参阅AngularFire指南中关于将用户登录的部分。
您正在寻找的包装器函数是$authWithPassword
,请阅读API文档中关于如何使用$authWithPassword
的示例。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 无错误或延迟的第三方像素
- 修复了在 PhoneGap 中使用 jQuery Mobile 的 jQuery 验证中导致错误错误的延迟回调
- 错误处理和恢复与 jQuery 延迟
- 在 jQuery 的延迟对象中抛出错误
- 延迟链接 - 然后在上一个调用完成但出现错误时调用成功回调
- jQuery:在成功/错误中使用延迟对象(ajaxSetup 选项)
- 引用错误,用于使用 let 检查延迟声明的变量
- Firefox(v23)在延迟后将图像附加到dom时出现错误(包括JS Fiddle)
- 从服务到控制器的角度传递延迟错误
- 延迟回调中出现异常:错误:没有这样的模板:wiki
- 延迟Javascript解析给出错误
- 从具有延迟的开关中断:setTimeout+Break=语法错误
- 延迟jquery错误函数的执行
- 背景淡入时出现错误和延迟
- Dojo使用Dojo . xhrpost时延迟错误
- AngularJS延迟错误:参数'fn'不是一个函数,而是一个对象
- 延迟回调中的异常:错误:路由器上没有配置uiManager
- AngularFire(Angular+Firebase)身份验证错误延迟
- 来自 W3C 验证程序的错误“元素脚本不得具有属性延迟,除非还指定了属性 src”