标签:javascript angularjs firebase angularfire
我正在使用Angular(1.3.5)和Firebase编写玩具博客程序,目前我正在努力使用用户登录部分.
我首先创建了一个Angular模块:
var blogApp = angular.module('blogApp', ['ngRoute', 'firebase', 'RegistrationController']);
然后在blogApp上,我创建了一个名为** RegistrationController **的控制器:
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
我将login()方法附加到我在RegistratinController范围内的用户登录表单中的ng-submit.
当我点击提交登录表单时,表单没有做出任何响应,没有显示任何错误.
登录表单只有在我点击两次“提交”按钮时才有效 – 这是为什么?扑朔迷离
解决方法:
您使用的是Firebase JavaScript库,而不是AngularFire用于登录方法.
您需要将Firebase引用传递给$firebaseAuth绑定.
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绑定,用于处理对象和数组的自动同步. AngularFire还处理何时调用$scope.apply以正确更新视图.
在您的情况下,登录代码正在第一次单击,但它不会应用于页面.您可以将此代码包装在$timeout中,但最好使用$firebaseAuth服务.
标签:javascript,angularjs,firebase,angularfire 来源: https://codeday.me/bug/20190609/1206581.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。