3

假设我在我的应用程序某处缓存了一个静态用户列表,例如App.Users. 我可能需要在我的应用程序的几十个地方列出我的用户。按照惯例,我只需要将我的列表与我的上下文一起传递给模板。

var tmpl = Handlebars.templates['TemplateName'];

var html = tmpl({
    model: model,
    users: App.Users
});

但是这种方法需要在模板和 javascript 中进行一些布线。我想做的是单独在模板中指定这个,所以我不需要在我的脚本中记住这个。考虑这样的事情......

{{#each {{users}}}}
    <li> ... </li>
{{/each}}

...users一个只返回 my 的辅助函数在哪里App.Users?那不是很好吗?

所以这完全不编译。另一种解决方案是什么?

4

1 回答 1

7

用一个抽象的辅助函数处理......老实说,这似乎是 99% 的 Handlebars 问题的解决方案。

Handlebars.registerHelper('global', function(context, options) {
    return options.fn(App.[context].toJSON()); // Object is Backbone Collection
})

并在一个例子中使用......

{{#global "Users"}}
    {{#each this}}
         <th>{{Name}}</th>
    {{/each}}
{{/global}}
于 2013-09-17T19:06:59.967 回答