在freemarker模板中有条件地显示行

时间:2018-06-25 14:59:14

标签: javascript html netsuite freemarker suitescript

我正在根据JSON对象的排序数组(按任务排序)创建PDF,其中每个对象(例如JSON.arr[0] == i,包含备忘录,费率,金额和taskText。

仅当当前任务是第一个任务或与前一个任务不同时,我才想单独显示该任务。没有显示taskText。

<#if JSON?has_content>
<table>
  <tr>
    <th colspan="5">MEMO</th>
    <th>RATE</th>
    <th>AMOUNT</th>
    </tr>
  <#list JSON.arr as i>
    <#if i?first>
      <#assign task = i.taskText>
      <tr><td>${i.taskText}</td></tr>
    </#if>
    <#if i.taskText != task>
      <#assign task = i.taskText>
      <tr><td>${i.taskText}</td></tr>
    </#if>
    <tr>
      <td colspan="5">${i.memo}</td>
      <td>$${i.rate}</td>
      <td>$${i.amount}</td>
    </tr>
  </#list>
</table>
</#if>

1 个答案:

答案 0 :(得分:1)

使用内置的B3而不是?is_first。用于检查当前项目是否是当前列表中的第一项。

对于其他要求,我建议在循环之前 之前为?first分配一个初始值。很有可能该任务从未设置为task以外的任何内容,因此比较失败。