在MEAN app中交换Angular的Handlebars

时间:2014-05-24 12:04:39

标签: javascript node.js angularjs express

我正在构建一个带有用户身份验证的MEAN应用程序,而我目前正在学习Angular(我喜欢通过使用它来学习,而不是以实际的方式学习)。无论如何,在我剥离把手视图引擎并将视图文件从.hbs更改为.html之前,我能够显示当前经过身份验证的用户的用户名,如下所示:

句柄: {{user.username}} = req.user.username,它会显示当前经过身份验证的用户的用户名。

我现在使用sendfile:

,而不是使用渲染来渲染我的页面
app.get('/dashboard', Auth.ensureAuthenticated, function (req, res) {
    res.sendfile('./app/views/admin.html', req);
});

我想知道如何在Angular中呈现当前经过身份验证的用户的用户名。

1 个答案:

答案 0 :(得分:0)

您可以通过

发送用户信息
  1. 使用车把模板设置全局变量。

    app.get('/dashboard', Auth.ensureAuthenticated, function (req, res) {
        res.render('admin',{user: user});
    });
    

    在车把模板中添加如下内容

    <script type="text/javascript">
         window.user = {{user}};
    </script>
    

    将此全局包装在角度服务中

         angular.module('myApp').service('Global', ['$window', function($window){
             function _getUser() {
                 return $window.user;
             }
    
             return {
                 user: _getUser()
             };
         }]);
    

    现在,在您的控制器中,您可以通过注入全局服务来访问用户数据

       angular.module('myApp').controller('AdminController', ['$scope', 'Global',    function($scope, Global) {
           $scope.user = Global.user;
    
       }])
    

    用户将在您的角度局部视图中可用。

    <div data-ng-controller="AdminController">
        Welcome <span ng-bind="user"></span>
    </div>
    
  2. 或者您可以通过cookie发送信息。在角度服务中读取_getUser函数内的cookie值后,删除cookie。

  3. 或者你可以发送一个ajax请求来获取角度服务中的数据。