我的应用程序在应用程序启动时需要一些配置值。社区的建议是将它们作为单独的模块作为常量存储,最好是在单独的 .js 文件中。这可能对我有用。
但是我的配置值也存储在服务器上,并且不想在客户端复制那些,所以我正在考虑调用服务器来获取这些。
我是角度的新手,在模块的配置方法中进行服务器调用是有效的设计实践吗?如果是,那么我应该只使用 $http 服务从服务器获取值吗?
var main = angular.module('myapp', ['AdalAngular']);
main.config(['$stateProvider',$httpProvider, adalAuthenticationServiceProvider', function ($stateProvider,$httpProvider,adalProvider) {
// $stateProvider configuration goes here
// ?????CAN I make server call here to get configuration values for adalProvider.init method below???
adalProvider.init(
{
instance: 'someurl',
tenant: 'tenantid',
clientId: 'clientid',
extraQueryParameter: 'someparameter',
cacheLocation: 'localStorage',
},
$httpProvider
);
}]);
main.run(["$rootScope", "$state", .....
function ($rootScope, $state,.....) {
// application start logic
}]);
main.factory("API", ["$http", "$rootScope", function ($http, $rootScope) {
// API service that makes server call to get data
}]);
编辑1
因此,根据下面的建议,我将采用声明恒定的方法。基本上我会有单独的 config.js 文件,在部署过程中,我会用基于相应环境的 config.js 文件覆盖 config.js 文件。
问题
如果必须有 10 个常量,那么我必须将它们分别传递给 module.config()。是否可以将常量值声明为 JSON 对象并以某种方式在配置函数中读取它,这样我就没有传递 10 个不同的参数?
angular.module('myconfig', [])
.constant('CONFIGOBJECT','{Const1:somevalue,Const2:somevalue,Const3:somevalue,Const4:somevalue}');
然后我如何读取配置方法中的值?
var main = angular.module('myapp',['myconfig']);
main.config(['CONFIGOBJECT',function(CONFIGOBJECT){
?? How do I read CONFIGOBJECT value that is a string not json object?
})