[英]Custom handlebars helper
我有返回JSON的函數:
Template.mainmenu.menuitem = function() {
var jsonObj = { items: [
{ url: "http://google.com", title: "google" },
{ url: "http://stackoverflow.com", title: "stackoverflow" },
] };
return jsonObj;
};
我有自定義車把幫手:
Handlebars.registerHelper('woodoo', function(context, options) {
var ret = "";
for(var i = 0, j = context.length; i < j; i++) {
ret = ret + options.fn(context[i]);
alert(ret);
}
return ret;
});
這是模板:
<template name="mainmenu">
{{#woodoo menuitem}}
<a href="{{url}}">{{title}}</a>
{{/woodoo}}
HTML頁面正在呈現,沒有錯誤,但是我看不到URL,也沒有任何警告消息。 為什么以及如何解決?
看起來,在您的車把幫助器函數中, context.length
將返回undefined
,因此沒有什么要提醒的。
您希望for循環停止在items
鍵內的鍵長處。 一種簡短的編寫方法是Object.keys(context.items).length
。 同樣,您需要迭代的鍵在context.items
:
Handlebars.registerHelper('woodoo', function(context, options) {
var ret = "";
for(var i = 0, j = Object.keys(context.items).length; i < j; i++) {
ret = ret + options.fn(context.items[i]);
alert(ret);
}
return ret;
});
根據列出的Template.mainmenu.menuitem函數,您不需要自定義的Handlebars幫助器。 您可以像這樣使用內置的#each幫助器:
<template name="mainmenu">
{{#each menuitem.items}}
<a href="{{url}}">{{title}}</a>
{{/each}}
</template>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.