Один из подходов, который мы использовали в прошлом для инициализации настроек перед запуском приложения, заключался в использовании шаблонов на стороне сервера для файла html.Он больше ничего не сделал, а просто добавил блок <script>
и заполнил его строками типа window['prefix_propname'] = 'propvalue';
.Не самый элегантный способ, но он работал нормально.
Но сначала я бы подумал, если вам действительно нужно, чтобы он был глобальным.Вполне вероятно, что вы могли бы просто иметь поле данных в viewmodel main с настройками (которые загружаются при инициализации контроллера main), а затем связывать части настроек по мере необходимости с детьми через их конфигурацию.Логика, зависящая от значения настроек, будет либо в методах обновления / применения дочерней конфигурации, выраженных через формулы с настройками в качестве одного из параметров, либо через привязку (внутренний вид или контроллер).Привязки внутри контроллера - это очень удобная функция, которая довольно часто встречается в моем использовании, и она устраняет раздражение от необходимости иметь дело с асинхронной загрузкой;например:
// view controller
init: function() {
var vm = this.getViewModel();
vm.bind('{settings}', function(settings) {
//do your thing here
});
}