1

我正在寻找一种清晰而优雅的方式来让当前登录的用户在我的应用程序中随处可见,因为我有一个包含用户信息和注销按钮的导航部分视图,但我无法做到这一点.

我的起点是这个示例应用程序https://github.com/firebase/angularfire-seed,我刚刚添加了一个 AppCtrl,我可以在其中公开当前登录的用户。我尝试添加用户提供程序,但这也不起作用。

控制器.js

.controller('AppCtrl', ['$scope', '$rootScope','simpleLogin', 'fbutil', '$location', function($scope, $rootScope, simpleLogin, fbutil, $location) {
  $scope.user = simpleLogin.getUser();
  $scope.logout = function() {
    var profile = fbutil.syncObject(['users', simpleLogin.getUser().uid]);
    profile.$destroy();
    simpleLogin.logout();
    $location.path('/login');
  };
}])

索引.html

<body ng-controller="AppCtrl">

您的帮助将不胜感激。

4

2 回答 2

3

看一下resolve参数 - 这在$routerProvider和中都存在$stateProvideresolve解析对象(包括解析承诺),然后这些对象可供您的控制器使用。在这种情况下,您“解析”您的 loggedInUser 变量(通过您的身份验证服务执行您需要执行的任何操作。

$routeProvider
   .when("/someSecuredContent", {
     templateUrl: 'someSecuredContent.html',
     controller: 'SecuredController',
     resolve: {
        loggedInUser: function(MyAuth){
           return MyAuth.loggedIn(); // MyAuth.loggedIn() should return a $q promise
        }
     }
});

然后在控制器中,loggedInUser会被注入。

这是一个包含更多示例的站点。

于 2014-09-26T03:35:01.053 回答
0

在使用多种方法全局公开当前登录用户后,我认为最好在本教程中进行描述,特别是在“在整个应用程序中访问当前用户”部分。教程也很棒,我认为他们的架构适合这种类型的应用程序。

于 2014-10-01T01:31:03.600 回答