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