【发布时间】:2013-06-22 14:45:39
【问题描述】:
用一个简单的代码
{{#each array}}
{{@index}}: {{this}}
{{/each}}
出现大量错误。对于对象,{{@key}} 也会发生同样的情况。为什么会这样?
【问题讨论】:
标签: javascript meteor handlebars.js spacebars
用一个简单的代码
{{#each array}}
{{@index}}: {{this}}
{{/each}}
出现大量错误。对于对象,{{@key}} 也会发生同样的情况。为什么会这样?
【问题讨论】:
标签: javascript meteor handlebars.js spacebars
查看源代码(https://github.com/meteor/meteor/blob/master/packages/handlebars/parse.js):看起来与 Meteor 打包的 Handlebars 版本不支持 {{@ ..}} 表达式集。
【讨论】:
这对我来说绝对是一种挫败感。与此同时,我制作了一个车把助手来将任何内容解析为命名的“键”和“值”对象:
Handlebars.registerHelper('key_value', function(context, options) {
var result = [];
_.each(context, function(value, key, list){
result.push({key:key, value:value});
})
return result;
});
这将与#each 运算符一起使用,例如:
<dl class="attributes">
{{#each key_value attributes}}
<dt>{{key}}</dt><dd>{{value}}</dd>
{{/each}}
</dl>
(我也刚刚将这个发布到相关的Using @index in meteor #each iterator doesn't work)
【讨论】:
_.map 而不是_.each: return _.map(context, function(value, key) { return {key: key, value: value}; });