到目前为止我的模板:
<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',我必须专门更新这个模板,如何创建一个通用的表行模板?
答案 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;
});