Javascript 为什么在Meteor模板中使用{@…}会导致错误?
用一个简单的Javascript 为什么在Meteor模板中使用{@…}会导致错误?,javascript,meteor,handlebars.js,spacebars,Javascript,Meteor,Handlebars.js,Spacebars,用一个简单的 {{#each array}} {{@index}}: {{this}} {{/each}} 错误泛滥。对象的{{@key}}也会发生同样的情况。为什么会发生这种情况?查看源代码:它看起来不像是用Meteor打包的Handlebar版本支持的{{@..}表达式集。这对我来说肯定也是一个挫折。与此同时,我制作了一个Handlebar助手,将任何内容解析为命名的“key”和“value”对象: Handlebars.registerHelper('key_value', functi
{{#each array}}
{{@index}}: {{this}}
{{/each}}
错误泛滥。对象的{{@key}}也会发生同样的情况。为什么会发生这种情况?查看源代码:它看起来不像是用Meteor打包的Handlebar版本支持的{{@..}表达式集。这对我来说肯定也是一个挫折。与此同时,我制作了一个Handlebar助手,将任何内容解析为命名的“key”和“value”对象:
Handlebars.registerHelper('key_value', function(context, options) {
var result = [];
_.each(context, function(value, key, list){
result.push({key:key, value:value});
})
return result;
});
这将用于每个操作员,如:
<dl class="attributes">
{{#each key_value attributes}}
<dt>{{key}}</dt><dd>{{value}}</dd>
{{/each}}
</dl>
我也刚刚将此发布到相关的谢谢,我不知道。更简洁的实现是使用u.map而不是u.each:return u.mapcontext,functionvalue,key{return{key:key,value:value};};但是请注意,您的变通方法会显著影响应用程序的渲染性能。无论何时更改任何单个项目,都将重新呈现每个项目。这可能是大型收藏的一个问题。啊,是的,这绝对是一个好的观点。我认为Meteor将在以后的版本中解决这个问题。他们的新UI演示描述了更好的标记管理。希望它将包括键/值类型列表。