如何在Handlebars的#each循环中判断当前元素是否为最后一个?
解决Handlebars循环末尾逗号问题
直接用Handlebars each 循环自带的 @last 内置变量就能搞定,不用额外写复杂逻辑:
{{#each records}} {{{this}}}{{#unless @last}}, {{/unless}} {{/each}}
原理很简单:@last 会在迭代到最后一个元素时返回 true,unless 块会在条件不成立(也就是不是最后一个元素)的时候渲染里面的逗号和空格,完美避免末尾多出来的逗号。
如果你的Handlebars版本比较旧,不支持@last,还有两种更简单的思路:
提前在JS层处理数组:把数组直接转成带分隔符的字符串,比如在传入模板前做
records.join(', '),然后模板里直接渲染这个处理好的字符串:{{{joinedRecords}}}自定义一个join辅助函数:一次性解决所有数组拼接需求,以后其他地方也能用:
Handlebars.registerHelper('join', function(arr, sep) { return arr.join(sep || ', '); });模板里调用:
{{{join records ', '}}}
内容的提问来源于stack exchange,提问作者user20330985
相关产品推荐
相关产品推荐

