0

我有一个 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'
    })
}]);

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

谢谢

4

2 回答 2

1

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

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

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

于 2017-11-21T07:37:41.043 回答
1

我会用下一种方式来做:

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

<div id="config" data-jspvar="${myParam}"> </div>

  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. 现在您可以将此常量注入到您的配置块中。
于 2017-01-22T18:42:04.500 回答