atachrus
@atachrus

Как отловить событие когда Handlebars сформировал шаблон?

Подскажите такой момент, как правильно отловить события, что Handlebars отрисовал шаблон.
Аяксом загружаются данные, после идет построение шаблона. И получается что функция Ajax запроса "complete", срабатывает раньше, чем Handlebars построит шаблоны по этим данным.

$.ajax({
    url: urlData,
    type: "get",
    async: true,
    cache: false,
    timeout: 30000,
    success: function (data) {
        if(data.length > 0) {
            var template = Handlebars.compile($('#templateInvoice').html());
            resultContainer.html(template(data));
        }
    }, complete: function (data) {
        // Тут срабатывает раньше чем, Handlebars отрисует шаблоны
    }
});
  • Вопрос задан
  • 29 просмотров
Решения вопроса 1
w3bsme
@w3bsme
Интересное хуже
Функция complete возвращается после удачного получения заголовка 200 (ОК), поэтому так и происходит.
$.ajax({
    url: urlData,
    type: "get",
    async: true,
    cache: false,
    timeout: 30000,
    success: function(data) {
        if (data.length > 0) {
            var template = Handlebars.compile($('#templateInvoice').html());
            /**
             * Создаём новый промис, чтобы убедиться на 101%
             * @param  {Function} resolve [description]
             * @param  {Function} reject  [description]
             * @return {Promise}         [description]
             */
            const promiseBuilding = new Promise((resolve, reject) => {
                /**
                 * Можете потом убрать
                 * @return {[type]} [description]
                 */
                setTimeout(() => {
                    resolve('Complete')
                }, 300)
            })
            promiseBuilding.then(() => {
                resultContainer.html(template(data))
            })
        }
    }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы