如何为AngularJS模块提供配置?

时间:2013-01-14 13:06:25

标签: angularjs configuration dependency-injection

目前,我正在将传统应用程序与使用AngularJS编写的一些动态部分相结合。我想从我的服务器到我的模块提供一些配置。在这种情况下,我想配置应用程序“基本”URL。可以在特定位置找到所有模板,此位置由服务器确定。

所以我尝试过这样的事情:

angularForm.config(
 function($routeProvider, TemplateLocator) {
    $routeProvider.when('/', {
        controller : TestController,
        templateUrl : TemplateLocator.getTemplate('FormOuterContainer')
 });
});

在服务器上:

<script type="text/javascript">
 angular.module('BoekingsModule.config', []).provider('TemplateLocator', function() {
        this.$get = function() {
            return // something
        }

        this.getTemplate = function(name) { return 'location...'; }
    });
 </script>

但是,我不确定这是正确的方法。 简而言之:如何为模块提供一些(外部)配置而无需更改模块本身?

2 个答案:

答案 0 :(得分:4)

你可以做几件事

  1. 在服务器上的js中渲染位置。

    专家:请求少 - &gt;更好的表现(通常)

    缺点

    • 将服务器端渲染与SPA相结合,使系统更加复杂,从而导致更高的维护成本。
    • 如果你想混合使用服务器端渲染,那么正确压缩你的js文件就更难了,在html中嵌入js也很难看。
  2. 将模板位置解压缩为service

    通过此服务,您可以使用$resource以json格式从服务器获取数据。这样可以简化操作,但也可能会增加Web服务器的负载。

答案 1 :(得分:0)

哇,已经很久了。我完全忘记了这篇文章。

所以,最后我决定使用另一种方法更好。像iwein所说,将SPA与服务器端渲染相结合使应用程序变得更加复杂。因此,我将SPA部分解压缩到一个单独的应用程序中,而该应用程序又引用了(在我的例子中)JSP。

当我的模块需要一些额外的配置时,它会使用REST API获取它。这样,应用程序的SPA部分与服务器端呈现的部分完全分离。