我的条件正在被pug包含在HTML输出中

问题描述 投票:0回答:1

我在一个pug模板里有以下代码。

body
    h1(style="text-align: center;") Invoice Number #{invoiceNum}
    table(id="addr-tbl")
        tr
            td(style="width:50%").
                #{vendor.name}<br>
                #{vendor.addrLine1}<br>
                #{vendor.addrLine2}<br>
                #{vendor.addrLine3}<br>
                if (vendor.addrCity)
                    #{vendor.addrCity}
                if (vendor.addrState)
                    , #{vendor.addrState}
                if (vendor.addrPostalCode)
                    #{vendor.addrPostalCode}
                <br>

这段代码输出了我的 if 语句到HTML中。然后我试了这个。

            td(style="width:50%").
                #{vendor.name}<br>
                #{vendor.addrLine1}<br>
                #{vendor.addrLine2}<br>
                #{vendor.addrLine3}<br>
            if (vendor.addrCity)
                |#{vendor.addrCity}
            if (vendor.addrState)
                |, #{vendor.addrState}
            if (vendor.addrPostalCode)
                | #{vendor.addrPostalCode}
            <br>

它没有输出 if 语句,但它也输出 addrCity, addrStateaddrPostalCode 外围 td 标签。

目的是输出这些地址组件的每一个(可能在后面加一个逗号),只有当它们不属于 nullundefined. 否则,什么都没有。

如何在pug中实现这个功能?

node.js express pug
1个回答
1
投票

后面的 . 在你 td 强制将内容改为文本。如果你的文本和代码混合在一起。

 td(style="width:50%")
   | #{vendor.name}<br>
   | ...
   | #{vendor.addrLine3}<br>
   if (vendor.addrCity)
     | #{vendor.addrCity}

那么你就可以更明确地知道什么是代码什么是文本。

© www.soinside.com 2019 - 2024. All rights reserved.