2

以下是与以下内容一起使用的jsfiddle。说我有这样的JSON数据:使用Dust.js进行客户端模板化的条件语句

{ 
    "people": [ 
     { 
      "name": "Bob", 
      "eye-color": "Green" 
     }, 
     { 
      "name": "Jill", 
      "eye-color": "Blue" 
     }, 
     { 
      "name": "James", 
      "eye-color": "Green" 
     } 
    ] 
} 

如果我想输出的所有使用dust.js的人的名字,我会成立的模板,像这样:

<ul> 
    {#people} 
    <li>{name}</li>{~n} 
    {/people} 
</ul> 

但是,如果:

1)我只想输出“绿色”眼睛的人的名字?有没有办法做到这一点使用conditionals in dust

2)我只是想输出的前两个名字,无论眼睛的颜色

3)我只是想输出的第二人的名字,无论眼睛的颜色

编辑:添加第四和第五场景:

4)我只要显示的第二和第三的名称(即,索引X到索引Ý

5)我只想输出前两名绿眼睛的人(比如上面列出的人比上面列出的人长得多,包括更多绿眼的人不会被显示)。

还有一个问题:

说我的JSON有一个键/值对类似如下:

{ "tags": ["tag1", "tag2", "tag3"] } 

是否有使用{} @eq来检查它是否包含一个方式例如“tag2”?

回答

1

你可以使所有三个工作,但你将需要使用Dust helpers

1:你需要@eq助手(我也改变从eye-color关键eyeColor因为短线可以迷惑灰尘

<ul> 
    {#people} 
     {@eq key=eyeColor value="Green"} 
      <li>{name}</li>{~n} 
     {/eq} 
    {/people} 
</ul> 

2:你需要的@lt帮手,与$idx沿($idx是当前项的阵列,其中第一项为0)在索引

<ul> 
    {#people} 
     {@lt key=$idx value=2} 
      <li>{name}</li>{~n} 
     {/lt} 
    {/people} 
</ul> 

3:您需要@eq帮手,与0123沿

<ul> 
    {#people} 
     {@eq key=$idx value=1} 
      <li>{name}</li>{~n} 
     {/eq} 
    {/people} 
</ul> 
+0

太棒了!非常感谢。 2个快速插件:1)如果名称超过3个,你将如何显示名称2-3? 2){〜n}做什么?代码似乎没有它可以正常工作 – dougmacklin

+0

1)您可以嵌套'{@gt key = $ idx value = 0}'{@lt key = $ idx value = 3}' 2)'{〜n}'添加一条新的线,默认情况下,Dust会将其删除。你可能不需要它。 – smfoote

+0

谢谢smfoote!我又增加了两个场景和另一个相关的问题,你能否看看,让我知道这些是否可能?这将是所有,我保证:) – dougmacklin