Я создавал директиву для отображения диаграммы. Я прошел через обычные шаблоны создания модуля с директивой. Для конфигурации я решил использовать Провайдера. Я понял, как приложение могло настроить конфигурацию моего модуля через поставщика.Динамическая конфигурация в угловых JS
Однако один из вариантов использования, который у меня есть, заключается в том, что конфигурация может изменяться в зависимости от предпочтений пользователя во время выполнения. Как включить мой модуль для предоставления клиенту API возможности изменять конфигурацию во время выполнения?
Возможно ли внедрить ProviderConfiguration в клиентский контроллер? Есть ли у них какие-либо существенные недостатки в этом подходе?
Текущий код шаблона выглядит следующим образом
//Provider
angular.module('foobar', []).provider('foobarConfig', [function() {
var config = {
//config properties here.
}
var configurationProvider = {
//Getters and Setters that work on 'config'.
setProperty(prop, value) {
if(config[prop] !== undefined) {
config[prop] = value;
}
},
getProperty(prop) {
return config[prop];
},
$get: function() {
return this;
}
}
return configurationProvider;
}
//Chart Directive.
angular.module('foobar').directive('foobarChart', ['foobarConfig', function(foobarConfig) {
//Can use the foobarConfig here.
}]);
angular.module('clientApp', [ 'foobar'])
.config(['foobarConfigProvider', function(foobarConfigProvider) {
//Can provide the initial configuration to the module here.
foobarConfigProvider.setProperty("foo", "bar");
}]);
angular.module('clientApp').directive('clientFoo', function() {
//What should be done to change foobarConfig here?
});
Спасибо за бит об использовании альтернативы 'constant'. – Serendipity