在之前的解绑/解除关联之后,为什么angularFire没有绑定到范围?

时间:2013-11-06 20:07:05

标签: angularjs firebase angularfire

我正在尝试的是:在登录时,将配置文件信息添加到范围,然后在注销时使用解除关联回调(解除绑定),这样一个用户gunk就不会与下一个用户混合。

它适用于初始登录,但在注销后,登录失败。有什么建议?我已经注意到这与一般的分离。

    $scope.$on('angularFireAuth:login', function(){
        //attach current profile info to scope
        angularFire(fbUrl + 'profiles/user-' + $scope.auth.id , $scope, "profile",{}).
        then(function(unbind){
            console.log($scope.profile);
            $scope.$on('angularFireAuth:logout', function(){
                    //detach current profile info from scope
                    unbind();
            });
        });
    });

1 个答案:

答案 0 :(得分:0)

如你所知,你不能有重复的值:)。既然你也问过是否有更好的方法来使用回调,这里有一些额外的想法。我建议从promise回调中删除logout事件监听器有几个原因:

  1. 您最终可能希望针对与登录事件无关的事件执行其他操作,因此您希望保持关注点的分离。
  2. 您可能希望取消绑定应用中其他位置的个人资料信息,因此无论如何将其附加到$scope都是有意义的。
  3. 你可能想要做更像这样的事情:

    $scope.$on('angularFireAuth:login', function(){
      //attach current profile info to scope
      angularFire(fbUrl + 'profiles/user-' + $scope.auth.id , $scope, "profile",{}).
      then(function(unbind){
        $scope.unbindProfile = unbind;      
      });
    });
    
    $scope.$on('angularFireAuth:logout', function(){
      //detach current profile info from scope
      if($scope.unbindProfile) $scope.unbindProfile();
    });