Ben*_*Ben 206 javascript mustache handlebars.js
正如问题的标题所说,是否有胡子/把手循环对象属性的方式?
所以
var o = {
bob : 'For sure',
roger: 'Unknown',
donkey: 'What an ass'
}
Run Code Online (Sandbox Code Playgroud)
我可以在模板引擎中做一些相当于的事情
for(var prop in o)
{
// with say, prop a variable in the template and value the property value
}
Run Code Online (Sandbox Code Playgroud)
?
Jon*_*Jon 431
Handlebars.js中添加了对此功能的支持,因此不再需要外部帮助程序.
对于数组:
{{#each myArray}}
Index: {{@index}} Value = {{this}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
对象:
{{#each myObject}}
Key: {{@key}} Value = {{this}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
请注意,只会hasOwnProperty枚举通过测试的属性.
Ben*_*Ben 70
它实际上很容易实现为帮助:
Handlebars.registerHelper('eachProperty', function(context, options) {
var ret = "";
for(var prop in context)
{
ret = ret + options.fn({property:prop,value:context[prop]});
}
return ret;
});
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
{{#eachProperty object}}
{{property}}: {{value}}<br/>
{{/eachProperty }}
Run Code Online (Sandbox Code Playgroud)
小智 27
编辑:车把现在有一个内置的方式来实现这一点; 看到上面选择的答案.使用普通的胡子时,以下仍然适用.
Mustache可以遍历数组中的项目.所以我建议创建一个以Mustache可以使用的方式格式化的单独数据对象:
var o = {
bob : 'For sure',
roger: 'Unknown',
donkey: 'What an ass'
},
mustacheFormattedData = { 'people' : [] };
for (var prop in o){
if (o.hasOwnProperty(prop)){
mustacheFormattedData['people'].push({
'key' : prop,
'value' : o[prop]
});
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您的Mustache模板将是这样的:
{{#people}}
{{key}} : {{value}}
{{/people}}
Run Code Online (Sandbox Code Playgroud)
查看"非空列表"部分:https://github.com/janl/mustache.js
这是 @Ben 的答案,已更新以与 Ember 一起使用...请注意,您必须使用,Ember.get因为上下文是作为字符串传入的。
Ember.Handlebars.registerHelper('eachProperty', function(context, options) {
var ret = "";
var newContext = Ember.get(this, context);
for(var prop in newContext)
{
if (newContext.hasOwnProperty(prop)) {
ret = ret + options.fn({property:prop,value:newContext[prop]});
}
}
return ret;
});
Run Code Online (Sandbox Code Playgroud)
模板:
{{#eachProperty object}}
{{key}}: {{value}}<br/>
{{/eachProperty }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108461 次 |
| 最近记录: |