因为您正在测试两个不同的变量,所以您需要两个不同的真值测试。
您可以将此逻辑放入您的模板中,或者放入一个小助手中。我将向您展示两种方法。
我们假设您的上下文如下所示:
{
"cherry": false,
"berry": true
}
模板法
此方法需要dustjs-helpers >= 1.6.2
你必须包括两个{@eq}
检查。因为您使用的是最新版本的 Dust,所以您可以访问{@any}
and {@none}
帮手。
{@select key=cherry}
{@eq value="true" type="boolean"/}
{@eq key=berry value="true" type="boolean"/}
{@any}path/to/template1{/any}
{@none}path/to/template2{/none}
{/select}
您必须手动覆盖key
to berry
在第二个真相测试中。
不太好的模板方法
适用于所有版本的dustjs-helpers。
{@eq key=cherry value="true" type="boolean"}
path/to/template1
{:else}
{@eq key=berry value="true" type="boolean"}
path/to/template1
{:else}
path/to/template2
{/eq}
{/eq}
缺点:这无法扩展,很丑,而且会重复数据。
辅助方法
根本不需要dustjs-helpers。
{
"cherry": false,
"berry": true,
"isFruit": function(chunk, context) {
return context.get("cherry") || context.get("berry");
}
}
{?isFruit}
path/to/template1
{:else}
path/to/template2
{/isFruit}
优点:您可以添加更多条件而无需更改模板。