首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase在页面刷新时未触发$rootScope.$on($firebaseSimpleLogin:login)?

Firebase在页面刷新时未触发$rootScope.$on($firebaseSimpleLogin:login)?
EN

Stack Overflow用户
提问于 2014-03-29 20:01:03
回答 1查看 915关注 0票数 1

它会在我登录时触发,在我登录时触发,但在页面刷新时不再触发?我应该如何设置将触发的函数?

似乎当我刷新页面时,它会重新连接并重新进行身份验证(参见下面的firebase日志),但(我的猜测是)不会触发

代码语言:javascript
复制
0: event:/users:{"ep":"simplelogin:145","sp":"simplelogin:145"}:value 

怎么回事?

谢谢,瑞恩

控制器:

代码语言:javascript
复制
'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登录--登录(触发器):

代码语言:javascript
复制
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:value

FIREBASE日志(刷新时) --不触发

代码语言:javascript
复制
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}}} 
EN

回答 1

Stack Overflow用户

发布于 2014-09-03 20:09:47

遵循thinkster tutorial, part 7时遇到相同问题。

它是通过注入User修复的。在本教程中,这就是下一步(希望有人能够避免这个小小的障碍,这要归功于我的愚蠢)。

但通常情况下,导致问题的原因是User服务没有注入到页面上的任何控制器中,因此$rootScope.$on('$firebaseSimpleLogin:login' ...侦听器没有被注册,因此没有触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22730834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档