我想實現一個Handlebars helper,它將接收一些數據,並基於該數據生成一個列表。列表在輔助方法中生成後,我想循環這個列表。在這個例子中將會清楚。幫助器方法來生成列表
這種情況是:我有一些數據,並且當我解析數據時,我想爲該數據中的不一致性創建一些自定義警告。負責從原始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列表中的元素。
我註冊的助手:
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;
}
所以我希望這3個警告的text
特性,在一個列表,而是我得到一個錯誤:
遺漏的類型錯誤:逆在renderData()中不是函數。