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

whn*_*ode 2 javascript dust.js

我有这样的数据集:

[{"val": false}, {"val": null}]
Run Code Online (Sandbox Code Playgroud)

和模板:

{#.}
{@eq key=val type="string" value="false"}
FALSE
{:else}
NULL
{/eq}
{/.}
Run Code Online (Sandbox Code Playgroud)

这个模板返回:NULLNULL,但我想得到FALSENULL.任何想法如何使其工作?

小智 5

任何未被引号括起的辅助参数都将被视为引用.考虑这个例子:

JSON:

{
   "false":"mypropertyWithNameFalse"
}
Run Code Online (Sandbox Code Playgroud)

和模板

{@eq key=false type="string" value="mypropertyWithNameFalse"}
same
{:else}
not same
{/eq}
Run Code Online (Sandbox Code Playgroud)

灰尘false将从上下文中获取键的值,因此将呈现same.

为了让你的例子工作,你需要传入false一个字符串并type="boolean"在eqhelper 上使用参数,如下所示:

{@eq key=val value="false" type="boolean"}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,值key和value参数将被强制转换为布尔类型,您将获得您正在寻找的结果.

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