azovl
@azovl

Не могу отобразить шаблон mustache.js?

Не получается отобразить шаблон.
$(document).ready(function(){
        var data = {
            "name": "Thomas",
            "surname": "Jefferson",
            "dob": "02.07.1956"
        };

        var loadList = function(){
            $.get('templates/info.mst', function(template) {
                return Mustache.render(template, data);
            });
        };

        var div = document.createElement('div');
        div.innerHTML = loadList();
        document.body.appendChild(div);
    });

При выполнении
div.innerHTML = loadList();
- возвращается undefined.
Хотя в самой функции при выолнении
console.log(Mustache.render(template, data));
возвращается строка.
Как это исправить?
И непонятно, почему после
document.body.appendChild(div);
снова вызывается функция и срабатывает return Mustache.render(template, data);?
  • Вопрос задан
  • 2696 просмотров
Решения вопроса 1
@fr33zy
  1. Шаблоны mustache/handlebars лучше отрисовывать на сервере. Отрисовал - получил JS, загрузил JS при необходимости, выполнил функцию (да, шаблоны преобразуются в функцию js)
  2. loadList в данном случае ничего не возвращает. Даже если добавить ключевое слово return - вы не получите шаблон. JavaScript так не работает. У вас асинхронный вызов.


Как исправить? Выполняйте все необходимые действия после загрузки шаблона:
$.get('templates/info.mst', function(template) {
  var content = Mustache.render(template, data);
  // Вот тут
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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