Dustjs eq过滤器,null和false的不同行为

时间:2014-07-17 12:38:05

标签: javascript dust.js

我的数据集如下:

[{"val": false}, {"val": null}]

模板:

{#.}
{@eq key=val type="string" value="false"}
FALSE
{:else}
NULL
{/eq}
{/.}

此模板返回:NULLNULL,但我想获得FALSENULL。任何想法如何使它工作?

2 个答案:

答案 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"}

在这种情况下,keyvalue参数的值将被强制转换为布尔类型,您将获得所需的结果。

或者,您可以执行type="string"转换并将值作为字符串进行比较。但是coerce似乎没有强迫伪造价值的问题。我认为这是一个错误,需要修复。

答案 1 :(得分:0)

它没有像我预期的那样工作。灰尘模板无法支持简单类型:

{@eq key=val type="boolean" value=false}

当我以这种方式使用它时:

{@eq key=val type="boolean" value="false"}

有效。