我的数据集如下:
[{"val": false}, {"val": null}]
模板:
{#.}
{@eq key=val type="string" value="false"}
FALSE
{:else}
NULL
{/eq}
{/.}
此模板返回:NULLNULL,但我想获得FALSENULL。任何想法如何使它工作?
答案 0 :(得分:5)
任何未被引号括起的辅助参数都将被视为引用。考虑这个例子:
JSON:
{
"false":"mypropertyWithNameFalse"
}
和模板
{@eq key=false type="string" value="mypropertyWithNameFalse"}
same
{:else}
not same
{/eq}
Dust会从上下文中获取false
键的值,因此会呈现same
。
为了让您的示例正常工作,您需要将false
作为字符串传入,并在type="boolean"
帮助器上使用eq
参数,如下所示:
{@eq key=val value="false" type="boolean"}
在这种情况下,key
和value
参数的值将被强制转换为布尔类型,您将获得所需的结果。
或者,您可以执行type="string"
转换并将值作为字符串进行比较。但是coerce
似乎没有强迫伪造价值的问题。我认为这是一个错误,需要修复。
答案 1 :(得分:0)
它没有像我预期的那样工作。灰尘模板无法支持简单类型:
{@eq key=val type="boolean" value=false}
当我以这种方式使用它时:
{@eq key=val type="boolean" value="false"}
有效。