在 handlebars.js 中通过动态 属性 遍历对象
Iterate through object by dynamic property in handlebars.js
我试图使用动态 属性 名称遍历一个对象,但它似乎不起作用:
{{#each orders["order" + name] }}
甚至这似乎都不起作用
{{#each orders["orderDemo"] }}
但是这样做:
{{#each orders.orderDemo }}
根据其他条件或迭代处理动态 属性 名称的任何解决方案?
就我而言,我有:
{{#each types}}
{{#each orders[type] }}
<table>....</table>
{{/each}}
{{/each}}
AFAIK Handlebars 不提供任何 build-in 对动态属性的支持,但您可以像这样注册一个简单的 "Helper Function":
Handlebars.registerHelper('orders', function(parent,child,options) {
return parent["order"+child].map(options.fn).join``
});
然后按如下方式使用:
<ul>
{{#orders orders name}}
<li>{{this}}</li>
{{/orders}}
</ul>
如果你觉得递归,你甚至可以这样做:
Handlebars.registerHelper('forEach', function(parent,expr,options) {
return parent[Handlebars.compile(expr)(this)].map(options.fn).join``;
});
{{#forEach orders "order{{name}}" }}
<li>{{this}}</li>
{{/forEach}}
但如果您有大量数据,这将是一个性能问题。
我试图使用动态 属性 名称遍历一个对象,但它似乎不起作用:
{{#each orders["order" + name] }}
甚至这似乎都不起作用
{{#each orders["orderDemo"] }}
但是这样做:
{{#each orders.orderDemo }}
根据其他条件或迭代处理动态 属性 名称的任何解决方案?
就我而言,我有:
{{#each types}}
{{#each orders[type] }}
<table>....</table>
{{/each}}
{{/each}}
AFAIK Handlebars 不提供任何 build-in 对动态属性的支持,但您可以像这样注册一个简单的 "Helper Function":
Handlebars.registerHelper('orders', function(parent,child,options) {
return parent["order"+child].map(options.fn).join``
});
然后按如下方式使用:
<ul>
{{#orders orders name}}
<li>{{this}}</li>
{{/orders}}
</ul>
如果你觉得递归,你甚至可以这样做:
Handlebars.registerHelper('forEach', function(parent,expr,options) {
return parent[Handlebars.compile(expr)(this)].map(options.fn).join``;
});
{{#forEach orders "order{{name}}" }}
<li>{{this}}</li>
{{/forEach}}
但如果您有大量数据,这将是一个性能问题。