javascript 如何在#each中确定元素是最后一个?

bsxbgnwa  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(148)

我有这样一个简单的代码:

{{#each records}} {{{this}}}, {{/each}}

我想生成一个输出,比如A,B,C,D --最后一个元素后面没有逗号(目前确实有一个)。所以我需要在循环中确定一个元素何时是最后一个元素,或者类似的东西。我曾考虑过一个辅助函数,但由于该函数不知道正在迭代的是哪个元素,我不知道该如何工作。

hm2xizp9

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,因此要小心使用!

qcuzuvrc

qcuzuvrc2#

Meteor使用空格键模板语言。根据文档,您应该首选较新的each ... in语法,而不是较旧的each语法。
两者都支持特殊的@index变量,您可以使用该变量轻松地识别序列中的第一个元素。知道了第一个元素,您可以在除第一次迭代之外的每个输出之前添加一个逗号:

{{#each record in records}}{{#unless @index}} ,{{/unless}}{{record}}{{/each}}

受支持的unless块与if块的工作原理相同,只是有一个反向条件检查。
注意,我使用了双括号而不是三位来支持特殊字符的转义和防止html注入攻击。

相关问题