如何在 {{#each}} 循环中为元素添加分隔符,但不在最后一个元素后添加?

阅读时长 3 分钟读完

在前端开发中,我们经常需要通过模板引擎来渲染列表。对于这种情况,我们通常使用 Handlebars.js 来处理模板渲染。其中,我们可能会遇到一些问题,例如如何在 {{#each}} 循环中为元素添加分隔符,但不在最后一个元素后添加。

解决方案

方法1:使用 CSS 伪类

我们可以使用 CSS 中的伪类 :not(:last-child) 来选择所有不是最后一个子元素的元素,并在其后添加分隔符。

HTML:

CSS:

此方法简单易行,只需要少量的 CSS 即可轻松解决问题。但是,它可能会导致以下问题:

  • 在最后一个元素后仍然会产生逗号。虽然不会影响页面显示,但这可能会影响一些程序员的完美主义。
  • 当分隔符不是逗号时,例如短横线或竖线,这个方法就不能使用了。

方法2:使用 Handlebars Helper

我们可以编写一个 Handlebars Helper 来动态生成分隔符。这种方法可以解决在最后一个元素后添加分隔符的问题。

JavaScript:

-- -------------------- ---- -------
--------------------------------- --------------- -------- -
  --- --------- - ----------------- -- -- --
  --- ------ - ---
  ------- ---- --------------- ---- -
    ---- - -- ------ -- ----------
    ------ -- ---------------------
  -
  ------ -------
---

使用 Helper:

这种方法能够解决所有问题,但是需要编写一些 JavaScript 代码,稍微有点复杂。

总结

在 Handlebars.js 中,我们可以通过 CSS 伪类或者编写 Handlebars Helper 来为循环中的元素添加分隔符。使用哪种方法取决于你的具体需求。如果你只需要简单的逗号分隔符,并不关心最后一个元素的问题,那么使用 CSS 伪类就好了。但是如果你还需要更灵活的分隔符控制,那么编写 Handlebars Helper 是个不错的选择。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/605434cd8d846479e750ad6a

纠错
反馈