在Soy(Closure)模板中,如何在运行时打印可能未定义的表达式?

时间:2014-10-08 00:16:56

标签: google-closure-templates

假设模板模型包含一个名为$myMap的映射,其密钥在编译时是未知的。如果我的模板尝试使用{$myMap[$someValidKey]}打印地图条目,一切都很好。但是,如果我尝试使用{$myMap[$someInvalidKey]}进行打印,则模板无法呈现,而是抛出此错误:

In 'print' tag, expression "$myMap[$someInvalidKey]" evaluates to undefined.

如果该表达式未定义,即如何在地图中不存在这样的键,我怎么能告诉模板只是简单地打印?

2 个答案:

答案 0 :(得分:2)

我刚刚确认你可以有条件地包装它:

{if $myMap[$someInvalidKey]}{$myMap[$someInvalidKey]}{/if}

答案 1 :(得分:2)

在未定义的情况下,您可以使用{$myMap[$someInvalidKey] ?: ''}回退到不打印(空字符串)。