我的模板是
{#results}
{#publisher}Publisher Label {/publisher}
{#editor}Editor Label {/editor}
{#author}Author Label {/author}
{/results}
数据
{
results: {
"publisher": "Pankaj",
"editor": "Mike",
"writer": "Henry"
}
}
它输出"发布商标签编辑器标签"
我想要输出"发布商标签编辑器标签编写者"。由于编写器在模板中未定义,因此应该打印密钥本身。如何在模板中实现此逻辑?基本上应该打印整个数据。
答案 0 :(得分:2)
根据规定,您无法在Dust中解决此问题。你有几个选择,我会详细说明两者。
Dust只迭代数组,迭代逻辑就是你想要的,因为你想要查看所有键,而不仅仅是模板中指定的键。
将数据更改为更像这样:
{
results: [
{ role: "publisher", name: "Pankaj" },
{ role: "editor", name: "Mike" },
{ role: "writer", name: "Henry" }
]
}
允许您像这样编写模板(并需要dustjs-helpers):
{#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}
如果其他真值测试都没有评估为真,那么特殊{@none}
助手输出。
{@iterate}
您可以编写helpers来扩展Dust的模板逻辑。在您的上下文中编写帮助程序将是一种提取所需数据的简便方法。在这种情况下,there's already an {@iterate}
helper that's been written for you.在包含它并dustjs-helpers:
{@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}
虽然您必须添加另一个帮助器,但如果您无法重新格式化数据,这可能是更好的选择。