如何为BackboneJS使用创建通用表模板

时间:2013-01-04 17:19:43

标签: backbone.js handlebars.js

到目前为止我的模板:

<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>的模板?即。我现在有'name'和'age',但是我添加'height',我必须专门更新这个模板,如何创建一个通用的表行模板?

1 个答案:

答案 0 :(得分:0)

我认为你需要一个自定义Handlebars帮助器来迭代对象键。我没有使用它,但like this应该可以做到这一点。

以下是该链接的代码:

// 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;
});