检查 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
我正在尝试将 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