Доступ к данным конфигурации 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;
})());
Я бы сделал это следующим образом:
- Добавьте вашу переменную в качестве атрибута данных где-нибудь на вашей странице, например так:
<div id="config" data-jspvar="${myParam}"> </div>
- Теперь зарегистрируйте константу в вашем приложении angularjs
Как это:
app.constant('myCustomDataFromJSP', (function() {
// Define your variable
var myCustomDataFromJSP = ...; //you can use smth like this
//window.document.getElementById('config').dataset.jspvar
return myCustomDataFromJSP;
})());
- Теперь вы можете ввести эту константу в свой блок конфигурации.