在版本0.8之前,可以使用常规Handlebars方式来定义迭代块帮助程序,例如流行的each_with_key
,已定义,例如,here,如下所示:
Handlebars.registerHelper("each_with_key", function(obj, fn) {
var context,
buffer = "",
key,
keyName = fn.hash.key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
context = obj[key];
if (keyName) {
context[keyName] = key;
}
buffer += fn(context);
}
}
return buffer;
});
这不再适用于0.8,the migration guide也不适用 spacebars documentation为此展示了一个例子。
鉴于块助手现在被视为包含物,并且包含物需要返回模板(或null)而不是HTML,我现在对于是否以及如何甚至可能这一点都毫无头绪。
答案 0 :(得分:3)
就在我即将放弃的时候,我明白了。事实上,现在比以前更容易,更漂亮。以下似乎很有效:
JS:
UI.registerHelper('addKeys', function (all) {
return _.map(all, function(i, k) {
return {key: k, value: i};
});
});
HTML:
{{#each addKeys obj}}
<div>
{{key}}: {{value}}
</div>
{{/each}}