Я пытаюсь реализовать хелпер Handlebars, который будет принимать некоторые данные и на основе этих данных сгенерировать список. После того, как список был сгенерирован в вспомогательном методе, я хотел бы зациклировать этот список. Это будет ясно в этом примере.Вспомогательный метод для создания списка
Сценарий: У меня есть некоторые данные, и когда я анализирую данные, я хочу создать некоторые пользовательские предупреждения для несогласованности в этих данных. Метод, ответственный за генерирование предупреждений от необработанных данных JSON, называется generateWarnings()
.
У меня есть функции для компиляции шаблона и отображения данных, определяемый как это:
function compileTemplate(targetId) {
return Handlebars.compile($("#" + targetId).html());
}
function renderData(template, context, targetId) {
$("#" + targetId).html(template(context));
}
Я зову их:
var warningsPlaceHolderId = "warnings_plholder";
var warningsTemplateId = "warnings_template";
var warningsTemplate = HandlebarsHelpers.compileTemplate(warningsTemplateId);
renderData(warningsTemplate, data, warningsPlaceHolderId);
Рули шаблона:
<ol>
{{#each generateWarnings this}}
Warning description: {{this.text}}
{{/each}}
</ol>
Здесь generateWarnings
Помощник должен взять мои сырые данные JSON, создать фактический список предупреждений, d отображает каждое из этих предупреждений как элемент в списке HTML .
Я зарегистрировал Helper:
Handlebars.registerHelper('generateWarnings', function(data) {
return generateWarnings(data);
});
generateAll: function(data) {
var warning1 = {
type: 'error',
text: 'Testing error!'
};
var warning2 = {
type: 'warning',
text: 'Testing warning!'
};
var warning3 = {
type: 'info',
text: 'Testing info'
};
var arr = [];
arr.push(warning1);
arr.push(warning2);
arr.push(warning3);
return arr;
}
Так что я бы ожидать, что text
свойство этих 3-х предупреждений, чтобы быть в списке, но вместо этого я получаю сообщение об ошибке:
Uncaught TypeError: обратный не является функцией в renderData().