它会在我登录时触发,在我登录时触发,但在页面刷新时不再触发?我应该如何设置将触发的函数?
似乎当我刷新页面时,它会重新连接并重新进行身份验证(参见下面的firebase日志),但(我的猜测是)不会触发
0: event:/users:{"ep":"simplelogin:145","sp":"simplelogin:145"}:value 怎么回事?
谢谢,瑞恩
控制器:
'use strict';
angular.module('ccApp.services.user', ['ccApp.services.auth'])
.factory('User', ['$firebase', '$rootScope', 'FBURL',
function($firebase, $rootScope, FBURL){
var ref = new Firebase(FBURL + '/users');
var users = $firebase(ref);
var User = {
create: function (authUser, name) {
/* jshint camelcase: false */
console.log(authUser.id);
console.log(authUser.user);
users[authUser.id] = {
md5_hash: authUser.md5_hash,
name: name,
$priority: authUser.uid
};
users.$save(authUser.id).then(function () {
console.log(authUser.id);
setCurrentUser(authUser.id);
});
},
findByUserId: function (userId) {
if (userId) {
return users.$child(userId);
}
},
getCurrent: function () {
return $rootScope.currentUser;
},
signedIn: function () {
return $rootScope.currentUser !== undefined;
}
};
function setCurrentUser (userId) {
$rootScope.currentUser = User.findByUserId(userId);
}
$rootScope.$on('$firebaseSimpleLogin:login', function (e, authUser) {
console.log("trigger userservice - $firebaseSimpleLogin:login");
var query = $firebase(ref.startAt(authUser.uid).endAt(authUser.uid));
query.$on('loaded', function () {
setCurrentUser(query.$getIndex()[0]);
});
});
$rootScope.$on('$firebaseSimpleLogin:logout', function() {
delete $rootScope.currentUser;
});
return User;
}]);FIREBASE登录--登录(触发器):
p:0: Authenticating using credential: [object Object] firebase.js:34
p:0: {"r":4,"a":"auth","b":{"cred":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzOTYxODA0MzcsInYiOjAsImQiOnsicHJvdmlkZXIiOiJwYXNzd29yZCIsImlkIjoiMTQ1IiwidWlkIjoic2ltcGxlbG9naW46MTQ1IiwiZW1haWwiOiJjYXRlMzBAY2F0ZTMwLmNvbSIsIm1kNV9oYXNoIjoiM2QzOWIyZGU2Yjc1YjAyZWU0MWZlODkwMTQ2NzEwMTgiLCJzZXNzaW9uS2V5IjoiNjE0NTMzOWViZGU0YWQ0MGE4MjY5MzY4ODA2ZjIwNTcifSwiaWF0IjoxMzk2MDk0MDM2fQ.JAKEQH76MD9M4XsIDJDm0RLBuJ5rQzDgd4h1FiHQw78"}} firebase.js:34
p:0: from server: {"r":4,"b":{"s":"ok","d":{"auth":{"provider":"password","id":"145","uid":"simplelogin:145","email":"cate30@cate30.com","md5_hash":"3d39b2de6b75b02ee41fe89014671018","sessionKey":"6145339ebde4ad40a8269368806f2057"},"expires":1396180437}}} firebase.js:34
trigger userservice - $firebaseSimpleLogin:login userservice.js:49
0: event:/users:{"ep":"simplelogin:145","sp":"simplelogin:145"}:value firebase.js:34
0: event:/users:{"ep":"simplelogin:145","sp":"simplelogin:145"}:value firebase.js:34
triggered $firebaseSimpleLogin:login authcontroller.js:14
0: event:/users/145:default:value firebase.js:34
0: event:/users/145:default:valueFIREBASE日志(刷新时) --不触发
p:0: Browser went online. Reconnecting. firebase.js:34
p:0: Authenticating using credential: [object Object] firebase.js:34
p:0: Making a connection attempt firebase.js:34
c:0:0: Connection created firebase.js:34
c:0:0:0 Websocket connecting to wss://s-dal5-nss-18.firebaseio.com/.ws?v=5&ns=cc-1 firebase.js:34
c:0:0:0 Websocket connected. firebase.js:34
c:0:0: Realtime connection established. firebase.js:34
p:0: connection ready firebase.js:34
p:0: {"r":1,"a":"auth","b":{"cred":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzOTYxODA0MzcsInYiOjAsImQiOnsicHJvdmlkZXIiOiJwYXNzd29yZCIsImlkIjoiMTQ1IiwidWlkIjoic2ltcGxlbG9naW46MTQ1IiwiZW1haWwiOiJjYXRlMzBAY2F0ZTMwLmNvbSIsIm1kNV9oYXNoIjoiM2QzOWIyZGU2Yjc1YjAyZWU0MWZlODkwMTQ2NzEwMTgiLCJzZXNzaW9uS2V5IjoiNjE0NTMzOWViZGU0YWQ0MGE4MjY5MzY4ODA2ZjIwNTcifSwiaWF0IjoxMzk2MDk0MDM2fQ.JAKEQH76MD9M4XsIDJDm0RLBuJ5rQzDgd4h1FiHQw78"}} firebase.js:34
p:0: from server: {"r":1,"b":{"s":"ok","d":{"auth":{"provider":"password","id":"145","uid":"simplelogin:145","email":"cate30@cate30.com","md5_hash":"3d39b2de6b75b02ee41fe89014671018","sessionKey":"6145339ebde4ad40a8269368806f2057"},"expires":1396180437}}} 发布于 2014-09-03 20:09:47
遵循thinkster tutorial, part 7时遇到相同问题。
它是通过注入User修复的。在本教程中,这就是下一步(希望有人能够避免这个小小的障碍,这要归功于我的愚蠢)。
但通常情况下,导致问题的原因是User服务没有注入到页面上的任何控制器中,因此$rootScope.$on('$firebaseSimpleLogin:login' ...侦听器没有被注册,因此没有触发。
https://stackoverflow.com/questions/22730834
复制相似问题