Angularjs Firebase Simple Login$logout函数未将用户属性设置为null
根据$firebaseSimpleLogin的$logout方法文档,API明确指出 调用logout时,将触发$firebaseSimpleLogin:logout事件,并且对象上的user>属性将设置为null 然而,它似乎对我不起作用 以下是我的代码片段:Angularjs Firebase Simple Login$logout函数未将用户属性设置为null,angularjs,firebase,angularfire,firebase-security,Angularjs,Firebase,Angularfire,Firebase Security,根据$firebaseSimpleLogin的$logout方法文档,API明确指出 调用logout时,将触发$firebaseSimpleLogin:logout事件,并且对象上的user>属性将设置为null 然而,它似乎对我不起作用 以下是我的代码片段: var firebaseUrl = 'https://MYURL.firebaseio.com/'; var firebaseObject = new Firebase(firebaseUrl); $rootScope.f
var firebaseUrl = 'https://MYURL.firebaseio.com/';
var firebaseObject = new Firebase(firebaseUrl);
$rootScope.firebaseLoginObject = $firebaseSimpleLogin(firebaseObject, function(error, user) {
if (error) {
console.log(error);
} else if (user) {
console.log('User ID: ' + user.uid + ', Provider: ' + user.provider);
} else {
console.log('User is logged out');
// user is logged out
}
});
// Function for logging out.
$scope.logout = function() {
$rootScope.firebaseLoginObject.$logout();
console.log('i logged out successfully');
console.log($rootScope.firebaseLoginObject);
console.log($rootScope.firebaseLoginObject.user);
console.log($rootScope.user);
$location.path('/');
};
单击“ng click=logout()”后在控制台中获得的输出显示$rootScope.firebaseLoginObject未设置为null。问题在于$scope.logout。您的console.log语句是在$logout函数完成其工作之前执行的
$scope.logout = function() {
$rootScope.firebaseLoginObject.$logout();
// This is not necessarily true. At this point, you may still be
// logged in since $logout can take an unknown amount of time to finish.
console.log('i logged out successfully');
console.log($rootScope.firebaseLoginObject);
console.log($rootScope.firebaseLoginObject.user);
console.log($rootScope.user);
$location.path('/');
};
要确保在$logout完成后记录firebaseLoginObject的状态,请等待注销事件在$rootScope上广播
$rootScope.$on("$firebaseSimpleLogin:logout", function(event) {
// Log values here.
});