Backbone.js 如何创建BackboneJS使用的通用表模板

Backbone.js 如何创建BackboneJS使用的通用表模板,backbone.js,handlebars.js,Backbone.js,Handlebars.js,到目前为止,我的模板是: <script id="table-row" type="x-handlebars-template"> <tr> {{#each this}} <td>{{.}}</td> {{/each}} </tr> </script> 任何我的虚拟数据收集: this.collection = new Backbone.Collect

到目前为止,我的模板是:

<script id="table-row" type="x-handlebars-template">
    <tr>
        {{#each this}}
            <td>{{.}}</td>
        {{/each}}
    </tr>
</script>
任何我的虚拟数据收集:

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

现在,如何创建一个模板,该模板可以输出与模型中的对象键一样多的
?例如,我现在有“name”和“age”,但我添加的是“height”,我必须专门更新此模板,如何创建通用表行模板?

我想您需要一个自定义的Handlebar帮助程序来迭代对象键。我没用过,但应该有办法

以下是该链接中的代码:

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

您可能希望将
var template=handlebar.compile(…)
移动到迭代器之外,无需在每次迭代中重复这三个操作。请记住,JavaScript对象没有顺序,因此您不能依赖于以任何特定顺序出现的键;这意味着您必须分别指定所需的键及其顺序。这将起作用,但
for(key in obj)
不能保证以任何特定顺序迭代,因此这不是非常有用。因此,您建议如何处理此问题?这是真的。如果需要按照特定的顺序,那么手动列出您知道的所有键,然后将此循环作为一个全面的循环放在末尾,怎么样?您可以修改辅助对象以获取要排除的键数组。
// 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;
});