2015-01-06 165 views
2

我在角度控制器$ scope.abc中有一個變量。角度變量初始化

我有Sails作爲後端。

$ scope.abc的初始值可以在生成頁面時由後端確定。在頁面顯示給用戶後,$ scope.abc可能會或可能不會被用戶更改。

我可以有後端生成一個完整的靜態頁面,並讓角度查詢$ scope.abc初始值的後端。我覺得這不是必要的,因爲初始值可以在頁面生成時確定,並應該作爲頁面的一部分。

問題是:如何在生成網頁時初始化$ scope.abc?有沒有什麼辦法提供數據到角度js文件,類似於res.view(「」,data)?

+0

只需從角度控制器中創建$ http並從中分配$ scope.abc –

+0

確實使用$ http require angular創建第二個http請求以後端初始化$ scope.abc? – windchime

+0

如果您已有數據,則無需再發出一個請求。 – dfsq

回答

3

這裏你沒有太多的選擇。您可以再發出一個Ajax請求並加載數據。然而,如果在索引頁面加載過程中數據已經可用,我不是很理想。在這種情況下,您可以將其注入到其他腳本標記中,並從那裏訪問它。

<script> 
    // Make sure data is JSON encoded. 
    window.appConfig = <%= data %>; 
</script> 
<script src="angular.js"></script> 
<script src="app.js"></script> 

然後,我會在應用程序中設定一個恆定的服務將數據存儲在它:

angular.module('app').constant('appConfig', {data: window.appConfig}); 

這種方式,你可以在多個角度的方式在以後使用它,例如:

angular.module('app').controller(function($scope, appConfig) { 
    $scope.config = appConfig.data.userId; 
}); 

如果您擔心全局變量appConfig的存在,則可以在應用程序運行塊中將其刪除,此時已設置常量。