You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jsrender如何在if语句中引用循环索引及排查首次循环问题

嘿,我来帮你搞定这两个JsRender的问题,刚好我之前也踩过类似的坑!

关于JsRender循环索引与首次迭代检查的解决方案

问题一:在if语句中引用循环索引

JsRender在{{for}}循环里提供了内置的{{:#index}}变量(从0开始计数),你可以直接在{{if}}语句里用它来判断索引条件。给你举个实际可用的例子:

<script id="itemTemplate" type="text/x-jsrender">
  {{for productList}}
    <div class="product-item">
      {{if #index === 0}}
        <strong>这是第一个商品:{{:productName}}</strong>
      {{else if #index === productList.length - 1}}
        <span>这是最后一个商品:{{:productName}}</span>
      {{else}}
        <p>普通商品:{{:productName}}</p>
      {{/if}}
    </div>
  {{/for}}
</script>

这里的#index直接绑定当前循环项的索引,在if条件里直接判断就行,不需要额外的复杂操作。

问题二:检查for循环的首次迭代

你提到用getIndex()和自定义变量无效,大概率是用法没踩对点子上。其实JsRender已经内置了{{:#first}}这个布尔值变量,专门用来判断当前是否是循环的首次迭代,用它比自己折腾变量方便太多:

<script id="listTemplate" type="text/x-jsrender">
  {{for userList}}
    {{if #first}}
      <div class="header">用户列表(第一个项):{{:userName}}</div>
    {{else}}
      <div class="normal-item">用户:{{:userName}}</div>
    {{/if}}
  {{/for}}
</script>

如果之前你尝试用getIndex(),可能是没正确调用上下文方法——getIndex()需要在循环上下文里用~前缀访问,比如{{if ~getIndex() === 0}},但显然用#first更简洁直观,还不容易出错。

至于自定义变量无效的问题,大概率是作用域没搞对:循环内的变量更新没法正确同步到判断逻辑里,而#first是JsRender内部维护的上下文变量,完全不用操心作用域的问题,直接用就稳了。

内容的提问来源于stack exchange,提问作者user3507848

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:56:25