当用户关闭或刷新浏览器时,我想将时间保存到firebase数据库,然后将它们从firebase中注销。
我可以使用$window.onbeforeunload
执行其中一项操作,但在尝试同时执行这两项操作时失败。
我可以通过以下方式节省时间:
$scope.onExit = function () {
userRef.update({ lastLogin: Firebase.ServerValue.TIMESTAMP });
};
$window.onbeforeunload = $scope.onExit;
或者我可以通过以下方式将用户注销(使用注销服务):
$scope.onExit = function () {
logOutService.logoutUser();
};
$window.onbeforeunload = $scope.onExit;
如果我将两者结合起来只有第一项有效(在下面的例子中只记录时间)
我创建了单独的函数并将它们组合在一起,但仍然只有第一个函数可以工作。
$scope.onExit = function () {
userRef.update({ lastLogin: Firebase.ServerValue.TIMESTAMP });
};
$scope.logOut = function () {
logOutService.logoutUser();
};
$scope.combined = function () {
$scope.logout();
$scope.onExit();
};
$window.onbeforeunload = $scope.combined;
任何指针都非常感谢!
更新
好的,如果我将$scope.onExit();
放在$scope.logout();
之前(我简化了问题的方案),上面的确有效。当我输入第三个函数时会出现问题:
$scope.onExit1 = function () {
userRef.update({ lastLoginPrevious: data.lastLogin });
};
$scope.onExit = function () {
userRef.update({ lastLogin: Firebase.ServerValue.TIMESTAMP });
};
$scope.logOut = function () {
logOutService.logoutUser();
};
$scope.combined = function () {
$scope.onExit1();
$scope.onExit();
$scope.logout();
};
$window.onbeforeunload = $scope.combined;
新功能将当前lastLogin
时间针对用户移动到lastLoginPrevious
。我是通过使用snapshot()
获取data.lastlogin
值来实现这一点的,这似乎是导致问题的原因,就像我将data.lastlogin
更改为Firebase.ServerValue.TIMESTAMP
一样正常有三个功能。在这种情况下我无法使用snapshot()
的任何想法?
更新
好的,我已经到底了。我试图从data.lastlogin
之外拨打snapshot()
,因此它无法正常工作。一旦我将我的函数嵌套在snapshot()
中,一切正常。