是否可以让 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 上下文帮助程序来为您进行比较和输出,从而更好地为您服务。这使您的模板轻巧且易于理解。
我正在尝试在 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 上下文帮助程序来为您进行比较和输出,从而更好地为您服务。这使您的模板轻巧且易于理解。