Javascript Firebase多次登录用户
每次我点击登录按钮时都会发生这种情况 第一次登录:回调显示2次登录 首次注销 第二次登录:回调显示4次登录 第二次注销 第三次登录:callback现在第行显示5次登录 等等 这是我的登录功能:Javascript Firebase多次登录用户,javascript,angularjs,firebase,angularfire,firebasesimplelogin,Javascript,Angularjs,Firebase,Angularfire,Firebasesimplelogin,每次我点击登录按钮时都会发生这种情况 第一次登录:回调显示2次登录 首次注销 第二次登录:回调显示4次登录 第二次注销 第三次登录:callback现在第行显示5次登录 等等 这是我的登录功能: $scope.userLogin = function(user){ $scope.userLoginEmail = user.email; $scope.userLoginPassword = user.password; $scope.authUse
$scope.userLogin = function(user){
$scope.userLoginEmail = user.email;
$scope.userLoginPassword = user.password;
$scope.authUser().login('password', {
email: $scope.userLoginEmail,
password: $scope.userLoginPassword
});
$scope.loginModalHide();
user.email = '';
user.password = '';
};
我的问题很简单。为什么会这样?有时,即使我点击了logout,也会自动调用login。从查看您的
AuthCtrl
可以看出,您使用的是没有AngularFire绑定的FirebaseSimpleLogin。这样一来,$digest
循环就会遇到问题。使用AngularFire的一个好处是,它使用$digest
循环放置nice,因此我们不必担心应用范围或设置超时
AngularFire提供了$firebaseSimpleLogin
绑定。当用户登录和注销时,$rootScope
上会触发一个事件
app.controller('AuthCtrl', function($scope, $rootScope, $firebaseSimpleLogin) {
var simpleLogin = $firebaseSimpleLogin(new Firebase('<your-firebase>'));
$scope.user = {
email: '',
password: ''
};
$scope.login = function() {
simpleLogin.$login('password', {
email: user.email,
password: user.password
});
};
$rootScope.$on('$firebaseSimpleLogin:login', function(e, user) {
// handler post login event
});
$rootScope.$on('$firebaseSimpleLogin:logout', function(e, user) {
// handler post logout event
});
});
app.controller('AuthCtrl',函数($scope、$rootScope、$firebasemplogin){
var simpleLogin=$firebaseSimpleLogin(新Firebase(“”));
$scope.user={
电子邮件:“”,
密码:“”
};
$scope.login=函数(){
simpleLogin.$login('password'{
电子邮件:user.email,
密码:user.password
});
};
$rootScope.$on(“$firebaseSimpleLogin:login”,函数(e,用户){
//处理程序登录后事件
});
$rootScope.$on(“$FireBaseSimpleLogon:logout”,函数(e,用户){
//处理程序注销后事件
});
});
我通常在工厂中封装$firebaseSimpleLogin
绑定。您可以在此处查看Plunker上的演示示例:
您上面提供的代码示例不会重现您描述的错误。请提供一个复制错误的简短代码示例。@Kato因此有我的AuthCtrl和Factory:该代码或生成您描述的条件:(@Kato我不能运行整个代码,因为我使用了Appgyver类固醇,代码不能在JSFIDLE中运行。我提供了完整的Auth控制器,我认为登录函数有一切。我已经更新了它并提供了登录模式。重点是,函数只是从Firebase页面复制的。@Kato Github上有整个应用程序:非常感谢。我不会ry实现这一点并更好地学习Angular。在理解工厂等方面仍然存在问题。再次感谢!顺便说一句,Plunker演示中的简单图形很棒;)