Добрый день! Необходимо подгрузить справочники, прежде чем webix jet начнет во всю работать.
Но к сожалению, код из js/libs/webix-mvc-core/core код выполняется дальше, ждать ничего не хочет.
Ни паузы, ни promise.then - ничего ждать не хочет.
Вообще, по хорошему все эти data.json можно было впихнуть в define, но вот там требуется формат обязательно с define([]){return что-то}
define([
"js/libs/webix-mvc-core/core",
"js/libs/webix-mvc-core/plugins/menu"],
function (core, menu)
{
webix.ui({
id: 'load',
template: 'Подгрузка необходимых справочников'
});
webix.extend($$("load"), webix.ProgressBar);
$$("load").showProgress({
type:"bottom",
delay:2000,
hide:true
});
var a = webix.ajax('data.json');
var b = webix.ajax('profile.json');
var c = webix.ajax('options.json');
webix.promise.all([a,b, c]).then(function(results)
{
//.. код код код
//configuration
var app = core.create({
id: "webix", //change this line!
name: "webix",
version: "0.1.0",
debug: true,
start: "/app/start"
});
app.use(menu);
return app;
})
});
Незнаю насколько это вам поможет, но хотя старт самого приложения отложить нельзя, отдельные вью могут возвращать промайсы
То есть можно оставить старт самого приложения как есть, а в views/app.js вернуть не объект ui а его промис ( который уже будет привязан к промисам данных )
Либо, еще как вариант, укажите в качестве start, отдельное вью loading. Которое отрисует страницу загрузки, а по загрузке данный вызовет app.show("/app/start")
Решил переписать свой старый кусок кода, к сожалению до этого подгружал синхронно справочники и вешал таймаут. Все это было долго, сейчас через ожидания.
Но, не пашет никак
var a = webix.ajax('models/statistic/region_stat_data.json');
var b = webix.ajax('models/statistic/russia.json');
webix.promise.all([a,b]).then(function(results)
{
alert(1);
define([
"js/jquery-1.11.3.min",
], function (jquery)
{
alert(2);
return {};
});
});
Притом, если define использовать до ожидания, то все хорошо.
А вот define внутри ожидания - все плохо
Это погоды не сделает, так как вместо jquery может быть
“js/libs/webix-mvc-core/core”,
“js/libs/webix-mvc-core/plugins/menu”,
или другие компоненты, внутри которых есть еще define а внутри их еще define
в вызываемых компонентах define быть обязан. у define и require логика отличается. define не может быть вложен в функцию. и для вызова json файлов лучше использовать “json!” плагин.
Это все понятно.
Но json и require тут вообще не причем.
Но в любом случае, спасибо за помощь.
Проблему решил, по способу, описанным Максимом.
Создал отдельное вью loading и по окончанию его работы вызвал app/start