是否有内置方法可以循环访问对象的属性?

有没有胡须/车把循环通过对象属性的方式?

所以与

var o = {
  bob : 'For sure',
  roger: 'Unknown',
  donkey: 'What an ass'
}

然后,我可以在模板引擎中执行一些等效于

for(var prop in o)
{
    // with say, prop a variable in the template and value the property value
}

?


答案 1

自车把 1.0rc1 起的内置支持

对此功能的支持已添加到车把.js中,因此不再需要外部助手。

如何使用它

对于数组:

{{#each myArray}}
    Index: {{@index}} Value = {{this}}
{{/each}}

对于对象:

{{#each myObject}}
    Key: {{@key}} Value = {{this}}
{{/each}}

请注意,只有通过 hasOwnProperty 测试的属性才会被枚举。


答案 2

作为帮助程序,它实际上很容易实现:

Handlebars.registerHelper('eachProperty', function(context, options) {
    var ret = "";
    for(var prop in context)
    {
        ret = ret + options.fn({property:prop,value:context[prop]});
    }
    return ret;
});

然后像这样使用它:

{{#eachProperty object}}
    {{property}}: {{value}}<br/>
{{/eachProperty }}