私は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リストの要素として表示します。
私はヘルパーを登録:
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
プロパティがリストにあることを期待するが、代わりに私はエラーを取得しています:
キャッチされない例外TypeError:逆にrenderData()での関数ではありません。