是否可以让 DUST 模板循环并交错来自两个不同数组的元素?

Is it possible to have the DUST template loop and interleave elements from two different arrays?

我正在尝试在 table 的 Dust 中创建一个模板页面,在 table 的一个单元格中同时显示 delta_time 和 elapsed_time。 delta_time 和 elapsed_time 的数据都保存在不同的数组中。

我遇到的问题是我无法找到是否可以从 dust 模板中的不同数组上下文访问另一个数组上下文。

页面的 JSON 数据是...

{
"state": {
    "objects": [
        {
            "id": "1",
            "Objectcolour": "#0000FF",
            "delta_times": [0, 7600, 8000, 35400, -300, -260],
            "elapsed_times": [1384342615000, 1384342622600, 1384342630600, 1384342666000, 1384342669000, 1384342671600]
        },
        {
            "id": "2",
            "Objectcolour": "#00FF00",
            "delta_times": [0, 7600, 8000, 35400, -300, -260],
            "elapsed_times": [1384342615000, 1384342622600, 1384342630600, 1384342666000, 1384342669000, 1384342671600]
        }
    ]
}

}

Dust 模板目前...

    {#state.objects}
<table>
    <tr>
        <th>ID</th>
        {#distances}
        <th>{split_distances}</th>
        {/distances}
    </tr>
    <tr>
        <th>{id}</th>
        {#elapsed_times}
        <th>{.}
    --Need to add some way to access {#delta_times} here!
                       </th>
        {/elapsed_times}

    </tr>
</table>
    {/state.objects}

我希望最后的 table 看起来像这样

<table>
<tr>
    <th> ID </th>
    <th> 0m </th>
    <th> 10m </th>
    <th> 20m </th>
    <th> 30m </th>
    <th> 40m </th>
    <th> 50m </th>
</tr>

<tr>
    <th> 1 </th>
    <th> 11:36:55.0, </th>
    <th> 11:37:02.6, + 7.6</th>
    <th> 11:37:10.6, + 8.0 </th>
    <th> 11:37:46.0, + 35.4</th>
    <th> 11:37:49.0, - 3.0</th>
    <th> 11:37:51.6, - 2.6 </th>        
</tr>
<tr>
    <th> 2 </th>
    <th> 11:36:55.0, </th>
    <th> 11:37:02.6, + 7.6</th>
    <th> 11:37:10.6, + 8.0 </th>
    <th> 11:37:46.0, + 35.4</th>
    <th> 11:37:49.0, - 3.0</th>
    <th> 11:37:51.6, - 2.6 </th>        
</tr>
</table>

我缩减了上面的示例代码以仅显示问题,因此我删除了所有用于正确显示数字的 Dust 助手以及实现此 [=] 所需的其他一些 JSON 36=].

目前我能看到的解决这个问题的唯一方法是将 JSON 代码重新映射到不同的结构中,将两个数组连接成一个结构。有没有办法在 Dust 模板中解决这个问题?谢谢

在您的评论中添加此代码通过比较两个数组的索引解决了问题。当索引相等时,拆分输出。

{#delta_times i=$idx}
  {@eq key=$idx value=i}+ {.}{/eq}
{/delta_times}

然而,这很丑陋,在我看来,您可以通过编写一个小的 Dust 上下文帮助程序来为您进行比较和输出,从而更好地为您服务。这使您的模板轻巧且易于理解。