2014-02-09 35 views
0

如何將用戶信息從req.user傳遞到視圖Nodejs Passport display username有一個很好的答案。我在網上看到的所有答案包括這一個,並且還在尋找mean.io使用jade渲染引擎。在我的情況下,我正在使用res.sendfile(.... static.html)以角度執行路由發送文件。NodeJS顯示用戶名,無需res.render

在這種情況下,將用戶信息傳遞給視圖的正確方法是什麼?

+0

我的答案解決了您的問題嗎?請不要讓我知道。 如果確實如此,請隨時接受。這可以幫助你,我和其他社區:) – bernhardw

回答

1

如果您想要繼續發送靜態文件而不是使用res.render(),則必須在客戶端請求用戶信息,而不是通過服務器傳遞。

有幾種方法可以通過Angular請求用戶詳細信息。最簡單的可能是從控制器需要的信息做到這一點:

// UserController.js 
app.controller('UserController', function (UserService) {  
    UserService.resolveUser().success(function (user) { 
     $scope.user = user; 
    });  
}); 

// UserService.js 
app.factory('UserService', function ($http) {  
    return { 
     resolveUser: function() {    
      return $http.get('/user'); 
     },   
    }  
}); 

您也可以使用$routeProviderresolve方法,直到用戶信息請求和提供延遲的路由負載。

...或者您可以手動引導您的應用程序,如果您需要所有路線上的用戶信息。

讓我知道你是否需要額外的信息,無論是Angular還是Node.js,這些我都沒有在這裏觸及。

編輯:

關於你的評論,這是你如何使用$ HTTP請求您的用戶信息,然後才引導你的應用程序:

angular.module('app', []); 

// We only need invoke in order to use the $http service 
// before we are bootstrapped. 
angular.bootstrap().invoke(function ($http) { 

    $http.get('user.json').success(function (data) { 
     angular.element(document).ready(function() { 
      angular.module('app').constant('USER', data); 
      angular.bootstrap(document, ['app']); 
     }); 
    }); 

}); 

angular.module('app').run(function (USER) { 
    console.log(USER); 
}); 

你可以找到一個與this Plunker現場示例。

+0

你將如何手動引導應用程序?我認爲這就是我所期待的。謝謝 – happygilmore

+0

請參閱我上面的修改。 – bernhardw

+0

當我有時間時,我將不得不檢查這一點,但非常感謝您的幫助! – happygilmore