我有这样一个简单的代码:
{{#each records}} {{{this}}}, {{/each}}
我想生成一个输出,比如A,B,C,D --最后一个元素后面没有逗号(目前确实有一个)。所以我需要在循环中确定一个元素何时是最后一个元素,或者类似的东西。我曾考虑过一个辅助函数,但由于该函数不知道正在迭代的是哪个元素,我不知道该如何工作。
hm2xizp91#
您更应该在渲染之外处理列表,并只显示结果:
const list = ['A', 'B', 'C', 'D'] Template.myTemplate.onCreated(function () { this.list = new ReactiveVar() this.list.set(list.join(',')) }) Template.myTemplate.helpers({ list () { return Template.instance().list.get() } })
{{list}}
也就是A, B, C, D此外,如果使用三个括号{{{expression}}},则直接呈现到DOM,因此要小心使用!
A, B, C, D
{{{expression}}}
qcuzuvrc2#
Meteor使用空格键模板语言。根据文档,您应该首选较新的each ... in语法,而不是较旧的each语法。两者都支持特殊的@index变量,您可以使用该变量轻松地识别序列中的第一个元素。知道了第一个元素,您可以在除第一次迭代之外的每个输出之前添加一个逗号:
each ... in
each
@index
{{#each record in records}}{{#unless @index}} ,{{/unless}}{{record}}{{/each}}
受支持的unless块与if块的工作原理相同,只是有一个反向条件检查。注意,我使用了双括号而不是三位来支持特殊字符的转义和防止html注入攻击。
unless
if
2条答案
按热度按时间hm2xizp91#
您更应该在渲染之外处理列表,并只显示结果:
也就是
A, B, C, D
此外,如果使用三个括号
{{{expression}}}
,则直接呈现到DOM,因此要小心使用!qcuzuvrc2#
Meteor使用空格键模板语言。根据文档,您应该首选较新的
each ... in
语法,而不是较旧的each
语法。两者都支持特殊的
@index
变量,您可以使用该变量轻松地识别序列中的第一个元素。知道了第一个元素,您可以在除第一次迭代之外的每个输出之前添加一个逗号:受支持的
unless
块与if
块的工作原理相同,只是有一个反向条件检查。注意,我使用了双括号而不是三位来支持特殊字符的转义和防止html注入攻击。