AngularJS+;火基。注销后,旧用户数据仍然存在。在firebase上创建新帐户和旧用户数据将被替换
所以,我遵循thinksters fantasy football应用程序教程,但每当我注销并尝试创建新帐户时。将创建新帐户,并用新用户信息替换firebase上旧用户的所有信息 我猜这是一个范围问题,在注销时没有得到清除AngularJS+;火基。注销后,旧用户数据仍然存在。在firebase上创建新帐户和旧用户数据将被替换,angularjs,firebase,Angularjs,Firebase,所以,我遵循thinksters fantasy football应用程序教程,但每当我注销并尝试创建新帐户时。将创建新帐户,并用新用户信息替换firebase上旧用户的所有信息 我猜这是一个范围问题,在注销时没有得到清除 'use strict'; /* Services */ angular.module('fantasyApp.services.login', ['fantasyApp.services.profileCreator']) .factory('loginServic
'use strict';
/* Services */
angular.module('fantasyApp.services.login', ['fantasyApp.services.profileCreator'])
.factory('loginService', ['angularFireAuth', 'profileCreator', '$location', '$rootScope',
function(angularFireAuth, profileCreator, $location, $rootScope) {
return {
login: function(email, pass, redirect, callback) {
var p = angularFireAuth.login('password', {
email: email,
password: pass,
rememberMe: true
});
p.then(function(user) {
if( redirect ) {
$location.path(redirect);
}
callback && callback(null, user);
}, callback);
},
logout: function(redirectPath) {
angularFireAuth.logout();
if(redirectPath) {
$location.path(redirectPath);
$scope.destroy()
}
},
createAccount: function(name, email, mobile, pass, callback) {
angularFireAuth._authClient.createUser(email, pass, function(err, user) {
if(callback) {
callback(err, user);
$rootScope.$apply();
}
});
},
createProfile: profileCreator
}
}])
嘿,这个git项目没有我们现在遇到的问题,所以我将以他的代码为例,试图找出我们做错了什么 更新:找到了
它位于第63行的函数中,但在注销第31行调用该函数 这个问题与app/js/controllers/headercontroller.js文件中的这段代码有关
$scope.$on('angularFireAuth:login', function() {
angularFire(new Firebase(FBURL+'/users/'+$scope.auth.id), $scope, 'user');
});
这里发生的事情是,每次angularfieauth:login
get的$broadcast'd,我们都将$scope.user
连接到位于FBURL+'/users/'+$scope.auth.id
的Firebase引用。现在的问题是,如果您注销,然后重新登录,angularFireAuth:login
将获得$broadcast'd两次。这不会是一个问题,除非我们在回叫中旋转一个角火。这样做的结果是,我们现在有两个angularFire
s绑定到$scope.user
。这意味着,如果$scope.user
发生更改,我们将写入两个独立的Firebase ref
如果我们将angularFire
附加到$scope.user
上,例如$scope.user
设置为{name:“Tyler”}
,那么当我们注销并重新登录时,$scope.user
的当前值将写入新的angularFire
,该值绑定到不同用户的路径。这导致了这种奇怪的帐户覆盖行为
无论如何,解决方案是使用disassociate()
方法,该方法在angularFire
的承诺得到解决时传递
例如,试试这个
$scope.$on('angularFireAuth:login', function() {
if ($scope.disassociateUserData) {
$scope.disassociateUserData();
}
angularFire(new Firebase(FBURL+'/users/'+$scope.auth.id), $scope, 'user').then(function (disassociate) {
$scope.disassociateUserData = disassociate;
};
});
$scope.$on('angularFireAuth:login', function() {
if ($scope.disassociateUserData) {
$scope.disassociateUserData();
}
angularFire(new Firebase(FBURL+'/users/'+$scope.auth.id), $scope, 'user').then(function (disassociate) {
$scope.disassociateUserData = disassociate;
};
});