0

所以到目前为止我的模板:

<script id="table-row" type="x-handlebars-template">
    <tr>
        {{#each this}}
            <td>{{.}}</td>
        {{/each}}
    </tr>
</script>

我的渲染代码:

that.collection.each(function(model){
     var template = Handlebars.compile( $('#table-row').html() );
     that.table.append(template(model.toJSON()));
});

任何我的虚拟数据收集:

this.collection = new Backbone.Collection([
      {name: "Tim", age: 5},
      {name: "Ben", age: 26},
      {name: "Rob", age: 55}
    ]);

现在,如何创建一个模板,它可以输出与<td>我的模型中的对象键一样多的 s?IE。我现在有'name'和'age',但是我添加'height',我必须专门更新这个模板,我怎样才能创建一个通用的表格行模板?

4

1 回答 1

0

我认为您需要一个自定义的 Handlebars 助手来迭代对象键。我没有使用过它,但是像这样的东西应该可以解决问题。

这是该链接中的代码:

// HELPER: #key_value
//
// Usage: {{#key_value obj}} Key: {{key}} // Value: {{value}} {{/key_value}}
//
// Iterate over an object, setting 'key' and 'value' for each property in
// the object.
Handlebars.registerHelper("key_value", function(obj, fn) {
    var buffer = "",
        key;

    for (key in obj) {
        if (obj.hasOwnProperty(key)) {
            buffer += fn({key: key, value: obj[key]});
        }
    }

    return buffer;
});
于 2013-01-04T17:30:34.690 回答