我有一个混合类型属性的对象 - 一些字符串,一些字符串数组,一些包含字符串数组的对象 - 可能会深入很多层次。
我想迭代所有属性,以便对象创建div,数组创建div,字符串属性创建包含文本的span。
{ "string" : "some text", "object" : { "array" : [ "text" ] } }
上述对象将呈现为:
<span>some text</span>
<div>
<div>
<span>text</span>
</div>
</div>
但通常结构要复杂得多。我应该如何实现这一目标呢?
答案 0 :(得分:13)
你提问已经有一段时间了,但我认为mixin
是你的朋友。我没有尝试过,但如果mixins支持递归,这应该可行:
mixin parseObject(obj)
div
- each val, key in obj
- if (typeof val === 'string')
span #{val}
- else if (typeof val === 'object')
mixin parseObject(val)
然后在.jade文件的正文中,拨打mixin parseObject(rootObject)
。
答案 1 :(得分:6)
在现代版的Jade中,它看起来像
mixin parseObject( obj )
div
each val in obj
if typeof val === 'string'
span= val
else if typeof val === 'object'
+parseObject( val )
然后在.jade文件的正文中,调用
+parseObject( rootObject )
答案 2 :(得分:5)
现在似乎支持递归。我已经成功地使用了这个功能,并进行了微小的调整;调用函数时需要使用mixin关键字。
mixin parseObject(obj)
div
each val, key in obj
if typeof val === 'string'
span #{val}
else if typeof val === 'object'
mixin parseObject(val)