Tom*_*Tom 12 recursion template-engine pug
我有一个混合类型属性的对象 - 一些字符串,一些字符串数组,一些包含字符串数组的对象 - 可能会深入多层次.
我想遍历所有属性,以便对象创建div,数组创建div,字符串属性创建包含文本的span.
{ "string" : "some text", "object" : { "array" : [ "text" ] } }
Run Code Online (Sandbox Code Playgroud)
上面的对象将呈现为:
<span>some text</span>
<div>
<div>
<span>text</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但通常结构要复杂得多.我应该如何实现这一目标呢?
mna*_*mna 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)
Run Code Online (Sandbox Code Playgroud)
然后在.jade文件的正文中,调用mixin parseObject(rootObject).
在Jade的现代版本中看起来像
mixin parseObject( obj )
div
each val in obj
if typeof val === 'string'
span= val
else if typeof val === 'object'
+parseObject( val )
Run Code Online (Sandbox Code Playgroud)
然后在.jade文件的正文中,调用
+parseObject( rootObject )
递归似乎现在被支持了.我已经成功地使用了这个功能,并进行了微小的调整; 调用函数时需要使用mixin关键字.
mixin parseObject(obj)
div
each val, key in obj
if typeof val === 'string'
span #{val}
else if typeof val === 'object'
mixin parseObject(val)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6776 次 |
| 最近记录: |