Javascript 如果在Dust.js中有其他内容
我的模板是Javascript 如果在Dust.js中有其他内容,javascript,dust.js,Javascript,Dust.js,我的模板是 {#results} {#publisher}Publisher Label {/publisher} {#editor}Editor Label {/editor} {#author}Author Label {/author} {/results} 数据是 { results: { "publisher": "Pankaj", "editor": "Mike", "writer": "Henry"
{#results}
{#publisher}Publisher Label {/publisher}
{#editor}Editor Label {/editor}
{#author}Author Label {/author}
{/results}
数据是
{
results: {
"publisher": "Pankaj",
"editor": "Mike",
"writer": "Henry"
}
}
它输出“发布者标签编辑器标签”
我想要输出“Publisher Label Editor Label writer”。由于模板中未定义writer,因此它应该打印密钥本身。如何在模板中实现此逻辑?基本上,所有的数据都应该打印出来。按照规定,你不能一蹴而就地解决这个问题。你有两个选择,我将详细说明这两个 选项1:更改数据格式 Dust只在数组上迭代,迭代逻辑实际上就是您想要的,因为您希望查看所有键,而不仅仅是模板中指定的键 更改数据以使其看起来更像:
{
results: [
{ role: "publisher", name: "Pankaj" },
{ role: "editor", name: "Mike" },
{ role: "writer", name: "Henry" }
]
}
将允许您这样编写模板(并要求):
如果其他真值测试的计算结果都不是真的,则特殊的{@none}
帮助程序将输出
选项2:自定义灰尘助手,{@iterate}
您可以编写以扩展Dust的模板逻辑。将助手写入上下文将是提取所需数据的简单方法。在这种情况下,在将其包括在内后,按如下方式使用:
尽管您必须添加另一个助手,但如果您无法重新格式化数据,这可能是一个更好的选择。完美答案。正是我要找的。
{#results}
{@select key=role}
{@eq value="publisher"}Publisher Label{/eq}
{@eq value="editor"}Editor Label{/eq}
{@eq value="author"}Author Label{/eq}
{@none}{role}{/none}
{/select}
{/results}
{@iterate key=results}
{@select key=$key}
{@eq value="publisher"}Publisher Label{/eq}
{@eq value="editor"}Editor Label{/eq}
{@eq value="author"}Author Label{/eq}
{@none}{$key}{/none}
{/select}
{/iterate}