检查 JSON 属性 是否存在 Jade Templating

Check JSON property existence Jade Templating

我正在尝试将 Jade 用于 html 模板的简单 Web 应用程序。我有 JSON 看起来像:

{
    "responses": [
        {
          "fieldOne": 1,
          "fieldTwo": 2,
          "fieldThree": "Some string"
        },
        {
          "fieldOne": 10,
          "field2": 20,
          "fieldFour": "Some other string"
        }
    ]
}

我试图在 Jade 中遍历此响应列表,并在 table 中为每个响应创建一行。循环似乎工作正常,问题是某些响应缺少字段,如果缺少该字段,我想在该单元格中放置一个空白。我正在将一张地图(来自 Spark)传递给 Jade,其中只有一个条目 "responseData",它映射到整个 JSON 对象。

body
    div
        table
            thead
                tr
                    th Field One
                    th Field Two
                    th Field Three
                    th Field Four
            tbody
                each val in responseData.responses
                    tr
                        td
                            #{val.fieldOne}
                        td
                            #{val.fieldTwo}
                        td
                            #{val.fieldThree}
                        td
                            #{val.fieldFour}

如果每个响应都包含所有四个字段,这现在就可以使用。我想用 if 条件替换它们,在它尝试读取值之前检查该字段是否存在。类似于:

td
    if val.fieldFour
        #{val.fieldFour}

这个 returns 'inaccessible or unknown property fieldFour' 如果 fieldFour 不存在。我想知道如何检查 val 是否具有特定的 属性。我试过遵循 Jade 教程,尝试使用 locals、使用方括号表示法等在前面添加内容,但无济于事。我还没有找到在循环内完成此操作的示例,因此这可能是个问题。

我已经查看了所有其他堆栈溢出问题,因此非常感谢您的帮助!谢谢!

我设法通过将散列 # 换成感叹号 !.

来实现这一点

两者的区别在于#是转义的,!是原始数据。您可以在此处查看差异的工作示例 - http://naltatis.github.io/jade-syntax-docs/#escaping

玉:

- responseData = { "responses": [{"fieldOne": 1,"fieldTwo": 2,"fieldThree": "Some string"},{"fieldOne": 10,"field2": 20,"fieldFour": "Some other string"}]}

table
  thead
    tr
      th Field One
      th Field Two
      th Field Three
      th Field Four
  tbody
    each val in responseData.responses
      tr
        td
          if val.fieldOne
            !{val.fieldOne}
        td
          if val.fieldTwo
            !{val.fieldTwo}
        td
          if val.fieldThree
            !{val.fieldThree}
        td
          if val.fieldFour
            !{val.fieldFour}

我这里有一个工作版本 - http://codepen.io/AdamCCFC/pen/akrjVv