gpt4 book ai didi

javascript - 带有 Angular : User Login 的 firebaseAuth

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:03 25 4
gpt4 key购买 nike

我正在使用 Angular (1.3.5) 和 Firebase 编写一个玩具博客程序,目前正在努力处理用户登录部分。

我首先创建了一个 Angular 模块:

var blogApp = angular.module('blogApp', ['ngRoute', 'firebase', 'RegistrationController']);

然后在 blogApp 之上,我创建了一个名为 ** RegistrationController ** 的 Controller :

blogApp.controller('RegistrationController', function ($scope, $firebaseAuth, $location) {

var ref = new Firebase('https://myAppName.firebaseio.com');
// var authLogin = $firebaseAuth(ref);


$scope.login = function(){

ref.authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(err, authData) {
if (err) {
$scope.message = 'login error';
} else {
$scope.message = 'login sucessful!';
}
});
}; // login

}); //RegistrationController

我在 RegistratinController 范围内将 login() 方法附加到我的用户登录表单中的 ng-submit。

当我点击提交登录表单时,表单没有任何响应,也没有任何错误显示。

登录表单仅在我单击“提交”按钮两次时才有效 - 这是为什么?令人困惑

最佳答案

您使用的是 Firebase JavaScript 库,而不是 AngularFire 作为登录方法。

您需要将 Firebase 引用传递到 $firebaseAuth 绑定(bind)中。

var auth = $firebaseAuth(ref);

从那里你可以调用auth.$authWithPassword

    $scope.login = function(){

auth.$authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(err, authData) {
if (err) {
$scope.message = 'login error';
} else {
$scope.message = 'login successful!';
}
});
}; // login

AngularFire 是 Firebase 库的 Angular 绑定(bind),可处理对象和数组的自动同步。 AngularFire 还处理何时调用 $scope.apply 以正确更新 View 。

在您的例子中,登录代码在第一次点击时起作用,但它没有应用到页面。您可以将此代码包装在 $timeout 中,但最好使用 $firebaseAuth 服务。

关于javascript - 带有 Angular : User Login 的 firebaseAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27389157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com