Не могу понять, как реализовать правильно изменяемый внешний объект (в данном случае конфигурация приложения)
При инициализации приложения, config.js записывает дефолтный конфиг из переменной на странице.
После этот файл подключается через импорт в другие модули приложения. И проблема в том, что при обновлении приложения с новым конфигом через функцию update(config), он не обновляется глобально (т.е во всех модулях). Использую singleton.
Может кто сталкивался и знает как правильно решить проблему?
index.js:
import { config, setConfig } from './config';
class App {
constructor () {
//-----
}
//------
update(config) {
let container = mount(this.el.offsetParent, el(this.config.container), this.el.nextSibling);
setConfig(config);
unmount(this.el.offsetParent, this.el);
mount(container, new App());
}
}
if(!config) {
console.error('Не найдена конфигурация');
} else {
let app = new App();
let container = document.body.querySelector(config.container) || document.body;
setTimeout(() => {
app.update({
//new config
});
}, 2000);
try {
mount(container, app);
} catch(e) {
console.error('[Example]', '[Module: ' + e.name + ']', e.message);
}
}
config.js
let Singelton = (() => {
let instance;
return (() => {
if(!instance) instance = {};
return instance;
})();
})();
Singelton.config = Object.assign({}, window.video_player_config) || null;
Singelton.setConfig = (_config) => {
Singelton.config = _config;
};
export const config = Singelton.config;
export const setConfig = Singelton.setConfig;