首页 > 解决方案 > 我的条件被 pug 包含在 HTML 输出中

问题描述

我在哈巴狗模板中有以下代码:

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,addrState并且addrPostalCodetd标记之外。

目的是仅当它们不是null/时才输出这些地址组件中的每一个(可能后面/前面有逗号) undefined。否则,什么都没有。

我怎么能在哈巴狗中做到这一点?

标签: node.jsexpresspug

解决方案


.你的尾随td是强制内容为文本。如果您有文本和代码的混合:

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

然后,您可以更具体地了解什么是代码和什么是文本。


推荐阅读