如果其他在 Dust.js
If Else in Dust.js
我的模板是
{#results}
{#publisher}Publisher Label {/publisher}
{#editor}Editor Label {/editor}
{#author}Author Label {/author}
{/results}
数据为
{
results: {
"publisher": "Pankaj",
"editor": "Mike",
"writer": "Henry"
}
}
It outputs "Publisher Label Editor Label "
我想要输出 "Publisher Label Editor Label writer"。逻辑是因为 writer 在模板中未定义,所以它应该打印密钥本身。如何在模板中实现此逻辑?基本上应该打印整个数据。
如前所述,您无法仅在 Dust 中解决此问题。你有几个选择,我会详细说明。
选项 1:更改数据格式
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 评估为真,则特殊的 {@none}
帮助程序输出。
选项 2:自定义除尘助手,{@iterate}
您可以编写 helpers 来扩展 Dust 的模板逻辑。将助手写入您的上下文将是提取所需数据的简便方法。在这种情况下,已经为您编写了一个 {@iterate}
帮助器。 像这样使用它,包括它和 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}
虽然您必须添加另一个助手,但如果您无法重新格式化数据,这可能是更好的选择。
我的模板是
{#results}
{#publisher}Publisher Label {/publisher}
{#editor}Editor Label {/editor}
{#author}Author Label {/author}
{/results}
数据为
{
results: {
"publisher": "Pankaj",
"editor": "Mike",
"writer": "Henry"
}
}
It outputs "Publisher Label Editor Label "
我想要输出 "Publisher Label Editor Label writer"。逻辑是因为 writer 在模板中未定义,所以它应该打印密钥本身。如何在模板中实现此逻辑?基本上应该打印整个数据。
如前所述,您无法仅在 Dust 中解决此问题。你有几个选择,我会详细说明。
选项 1:更改数据格式
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 评估为真,则特殊的 {@none}
帮助程序输出。
选项 2:自定义除尘助手,{@iterate}
您可以编写 helpers 来扩展 Dust 的模板逻辑。将助手写入您的上下文将是提取所需数据的简便方法。在这种情况下,已经为您编写了一个 {@iterate}
帮助器。 像这样使用它,包括它和 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}
虽然您必须添加另一个助手,但如果您无法重新格式化数据,这可能是更好的选择。