0

所以我在使用 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"
    }
];

我有这个dustjs模板:

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

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

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

谢谢你!!!!

4

1 回答 1

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}
于 2018-12-06T22:45:42.210 回答