2013-02-08 80 views
1

我正在使用Oauth來管理AngularJS應用程序中的會話用戶。我的Angular應用程序需要知道關於會話用戶的信息,因爲它用於我的$ resource對象(使REST調用像GET/user /:user/projects)。我希望這個用戶變量是全局的,並且同步,因此使用$ resource或$ http進行異步調用以獲取用戶向需要此會話用戶的代碼添加樣板(因爲它必須等待用戶信息返回從服務器)。在AngularJS中管理同步服務器端數據的最佳方法

現在,我使用這個骯髒的黑客能解決問題:在我的index.ejs文件(通知用戶呈現服務器端與EJS)

<script type="text/javascript"> 

    var session_user = <%- user %>; 

    </script> 

,然後我做

$rootScope.user = session_user 

問題是,當我單元測試控制器,當然session_user沒有定義。

我在想,也許我可以創建一個服務,返回這個變量session_user,所以我可以使用模擬測試。任何其他想法?這種問題的建議措施是什麼?

回答

2

實際上,它看起來並不像那些骯髒的黑客。如果會話用戶改變而不從服務器重新加載你的html(從而得到一個新的會話用戶),這看起來有問題。

角模塊具有constant功能,我使用了這樣的事情:

angular.module("MyModule", []) 
     .constant("User", window.session_user); 

然後你可以把User在你的控制器的可注射的價值。

相關問題