Доступ к данным конфигурации OSGi в app.config в AngularJS

У меня есть файл JSP, который получает данные из конфигурации OSGi в AEM, как показано ниже

<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'
    })
}]);

Как я могу получить это myCustomDataFromJSP из моего файла JSP? На этапе конфигурации мы не можем получить доступ к области.

Спасибо

2 ответа

Приведенный выше ответ хорош, но хорошо иметь скрытый ввод, а не div в DOM

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

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

Я бы сделал это следующим образом:

  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. Теперь вы можете ввести эту константу в свой блок конфигурации.
Другие вопросы по тегам