1

在 0.8 版之前,可以使用常规的 Handlebars 方式来定义迭代块助手,例如流行的each_with_key、已定义的,例如,如下所示

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 中不再有效,迁移指南空格键文档都没有显示此示例。

鉴于块助手现在被视为包含,并且包含需要返回一个模板(或 null),而不是 HTML,我对此时是否以及如何实现这一点一无所知。

4

1 回答 1

3

就在我准备放弃的时候,我想通了。事实上,现在 0.8 比以前更容易、更漂亮。以下似乎工作得很好:

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}}
于 2014-03-30T21:28:53.903 回答