Показать сообщение отдельно
  #1 (permalink)  
Старый 06.06.2014, 18:15
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

ExtJS 5, синхронная загрузка ресурсов
В моем приложении тексты выводятся в зависимости от языка пользователя, а на сервере хранятся в БД и изредка меняются. Поэтому я не могу просто прописать их в 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 для ожидания, но тут уже браузер возмущается что скрипт не отвечает. Подскажите пожалуйста, как бы вы решили эту проблему?
Ответить с цитированием