这是我的代码。登录时我会半持续地得到此错误,但如果单击登录按钮两次,则每次都会发生此错误。
app.controller('login', ['$scope', '$state', '$rootScope', '$localStorage', '$location', 'userData', '$firebaseObject', 'firebase', '$timeout', function($scope, $state, $rootScope, $localStorage, $location, userData, $firebaseObject, firebase, $timeout) {
var _ = firebase.database().ref()
$scope.signin = function(user) {
firebase.auth().signInWithEmailAndPassword(user.email, user.password).then(function(user) {
$localStorage.currentUser = user
$localStorage.me = $firebaseObject(_.child('user/' + $localStorage.currentUser.uid))
}).catch(function(error) {
console.log(error)
});
}
}]);
我没有看到什么可能触发错误,它必须在此页面上,因为到目前为止,我还没有重定向到其他任何地方。
我认为这可能是我的错误:Error: Maximum call stack size exceeded on Angualr Ui Router State Change但如果我理解正确,这是由于重定向循环,我没有进行任何重定向,只是打开Firebase Auth会话正确吗?
更新: 删除两个$localStorage
行后,错误不会发生,我的实施问题或$localStorage
?
答案 0 :(得分:0)
好吧所以我找到了解决此问题的方法,将整个Firebase Auth用户对象写入$localStorage
对象时会出现问题。不确定$localStorage
有哪些限制,但某处存在问题。我的解决方案是只解析所需的数据并将其保存到 $scope.signin = function(user) {
firebase.auth().signInWithEmailAndPassword(user.email, user.password).then(function(user) {
serializeUser(user)
}).catch(function(error) {
swal('Oops', 'There was an error: ' + error.message, 'error')
});
}
var serializeUser = function(user) {
var object = {
email: user.email,
uid: user.uid
}
$localStorage.currentUser = object
}
:
{
"context": {
"currdate": "@sys-date:today"
},
"output": {
"text": {
"values": [
"here it is $currdate"
],
"selection_policy": "sequential"
}
}
}