【问题标题】:Accessing OSGi config data in app.config in AngularJS在 AngularJS 中访问 app.config 中的 OSGi 配置数据
【发布时间】:2017-01-22 15:16:39
【问题描述】:

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

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

现在在我的 JS 文件中,我正在初始化我的 Angular 应用程序,如下所示:

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?在配置阶段我们无法访问范围。

谢谢

【问题讨论】:

    标签: java angularjs jsp aem angularjs-config


    【解决方案1】:

    我会用下一个方法:

    1. 将变量添加为页面某处的数据属性,如下所示:

    &lt;div id="config" data-jspvar="${myParam}"&gt; &lt;/div&gt;

    1. 现在在您的 angularjs 应用中注册一个常量

    像这样:

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

    【讨论】:

      【解决方案2】:

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

      &lt;input type='hidden' id="config" data-jspvar="${myParam}"&gt; &lt;/input &gt;

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

      【讨论】:

        猜你喜欢
        • 2011-03-29
        • 1970-01-01
        • 2018-12-18
        • 2011-08-24
        • 1970-01-01
        • 2018-06-12
        • 2016-04-09
        • 2016-06-21
        • 2017-06-08
        相关资源
        最近更新 更多