使用Dust.js(LinkedIn版)`@ eq`匹配多个值

时间:2015-06-12 19:08:07

标签: javascript templating dust.js

请注意,我正在使用LinkedIn的Dust.js版本,以及他们的助手。

我有一个Dust.js模板,我需要确定某个键的值是否是三个潜在值之一。

{@select key="{movie.type.name}"}
  {@eq value="Episode|Season|Show"}
    <span data-tag="show_level" class="qc_still_info">{@translate key="label.show_level_tag"/}</span>
  {/eq}
  {@default}
    <span class="qc_still_info">{@translate key="label.cannot_tag_show_level"/}</span>
  {/default}
{/select}

{@eq value="Episode|Season|Show"}是用于匹配剧集,季节或节目的伪代码。我想发现用于实现这一目标的最惯用的Dust.js语法。

如果数据是这个

{
  movie: {
    type: {
      name: 'Season'
    }
  }
}

{
  movie: {
    type: {
      name: 'Episode'
    }
  }
}

{
  movie: {
    type: {
      name: 'Show'
    }
  }
}

..然后我想要以下输出

<span data-tag="show_level" class="qc_still_info">Add a Show Level Tag</span>

1 个答案:

答案 0 :(得分:2)

@any是一个相对较新的Dust助手,可以为您解决问题(此处记录:http://www.dustjs.com/guides/dust-helpers/#select-helper)。使用@any帮助程序,您的代码看起来像

{@select key=movie.type.name}
  {@eq value="Episode"/}
  {@eq value="Season"/}
  {@eq value="Show"/}
  {@any}
    <span data-tag="show_level" class="qc_still_info">{@translate key="label.show_level_tag"/}</span>
  {/any}
  {@none}
    <span class="qc_still_info">{@translate key="label.cannot_tag_show_level"/}</span>
  {/none}
{/select}