在AngularJS中的app.config中访问OSGi配置数据

时间:2017-01-22 15:16:40

标签: java angularjs jsp aem angularjs-config

我有一个jsp文件,它从AEM中的OSGi配置中获取数据,如下所示

<c:set var="myParam" value="${myConfig.myParam}" scope="request"/>

现在在我的JS文件中,我正在开启我的角度应用程序,如下所示:

var app = angular.module('myapp', []);

app.provider("$provider1", [function () {
    // Default configuration
    var config = {
        key1:   'value'
      };
    return {
        configure: function (params) {
            angular.extend(config, params);
        },
        $get: ['$rootScope', function ($rootScope) {
            return {
                config: config
            };
        }]
    };
}]);

app.config(['$authProvider', function($authProvider) {

    $authProvider.configure({
        key1:               'myCustomDataFromJSP'
    })
}]);

如何从JSP文件中检索此myCustomDataFromJSP?在配置阶段,我们无法访问范围。

由于

2 个答案:

答案 0 :(得分:1)

我会以下一种方式做到:

  1. 将您的变量添加为页面上的某个数据属性,如下所示:
  2. <div id="config" data-jspvar="${myParam}"> </div>

    1. 现在在angularjs app中注册一个常量
    2. 像这样:

      app.constant('myCustomDataFromJSP', (function() {
      
        // Define your variable
        var myCustomDataFromJSP = ...; //you can use smth like this 
        //window.document.getElementById('config').dataset.jspvar
      
        return myCustomDataFromJSP;
      })());
      
      1. 现在您可以将此常量注入配置块。

答案 1 :(得分:1)

上面的答案很好,但是在那里有一个隐藏的输入而不是DOM中的div

<input type='hidden' id="config" data-jspvar="${myParam}"> </input >

app.constant('myCustomDataFromJSP', (function() { var myCustomDataFromJSP = //get the value here return myCustomDataFromJSP; })());