В моем приложении тексты выводятся в зависимости от языка пользователя, а на сервере хранятся в БД и изредка меняются. Поэтому я не могу просто прописать их в js файлах. Как выход, я создал синглтон который запрашивает тексты с сервера при создании.
Ext.define("Communication.config.LocalText",{
singleton : true,
constructor : function(config){
console.log("constructor : Communication.config.LocalText");
this.store = Ext.create("Ext.data.Store", {
model: "Communication.model.LocalText",
proxy: {
type: "ajax",
url : "/json?cmd=communication.translations",
pageParam: "",
startParam: "",
limitParam: ""
}
});
this.store.load();
}
});
Предполагалось что я буду подключать его к тем вьюхам где нужны тексты, таким вот образом:
Ext.define("Communication.view.TabMenu", {
extend: "Ext.tab.Panel",
alias: "widget.tabmenu",
requires: [
"Communication.config.LocalText"
],
initComponent: function() {
Ext.apply(this, {
items: [
{
title: Communication.config.LocalText.getText("heading", "history")
}
]
});
this.callParent(arguments);
}
});
Но возникла проблема: загрузка то асинхронная. Так что, когда я обращаюсь к этому синглтону и вызываю getText(), часто бывает что текстов еще нет. Я пытался сделать цикл после load для ожидания, но тут уже браузер возмущается что скрипт не отвечает. Подскажите пожалуйста, как бы вы решили эту проблему?