2015-01-06 116 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的存在,则可以在应用程序运行块中将其删除,此时已设置常量。