Dustjs-使用ustustjs模板检查数组中所有项目的条件

时间:2018-12-05 16:54:01

标签: dust.js dust-helpers dust-templates

所以我在使用Dust.js模板时遇到了麻烦。

假设我有以下示例对象模型:

var lifeStory = [{
        "LifeEvent": "Birth",
        "year": "1963"
    }, 
    {
        "LifeEvent": "marriage",
        "year": "1963",
        "month": "Jul",
        "day": "15"
    }, 
    {
        "LifeEvent": "death"
    }
];

// or 

var lifeStory = [{
        "LifeEvent": "Birth"
    }, 
    {
        "LifeEvent": "Baptizm"
    }, 
    {
        "LifeEvent": "marriage"
    }, 
    {
        "LifeEvent": "death"
    }
];

,我有这个ustustjs模板:

{#lifeStory}
<div class="myRow">
    <div class="DateColumn">        
        {year} - {month} - {day}
    </div>
    <div class="lifeEventColumn">
        {LifeEvent}
    </div>
</div>
{/lifeStory}

如果我的数组中没有任何年,月和日属性,我想隐藏DateColumn。 如果数组中只有一项具有日期信息,我想显示所有行的DateColumn。

我是灰尘的新手,但我认为这可能需要编写自定义的灰尘助手。任何帮助都会很棒。

谢谢!!!!

1 个答案:

答案 0 :(得分:0)

您需要{@any}助手。如果您测试的任何条件为真,该助手将执行。

我们将测试您的任何日期字段是否存在,并输出它们是否存在。

由于Dust在进行相等性检查时有一定的强制性,因此我们将所有内容都强制转换为字符串,并检查它们是否等于"undefined"

{#lifeStory}
<div class="myRow">
    {@select type="string"}
      {@ne key=year value="undefined"/}
      {@ne key=month value="undefined"/}
      {@ne key=day value="undefined"/}
      {@any}
        <div class="DateColumn">        
           {year} - {month} - {day}
        </div>
      {/any}
    {/select}
    <div class="lifeEventColumn">
        {LifeEvent}
    </div>
</div>
{/lifeStory}