Jade 模板中的对象的递归迭代?

发布于 2024-12-15 10:24:37 字数 410 浏览 1 评论 0原文

我有一个混合类型属性的对象 - 一些字符串,一些字符串数组,一些包含字符串数组的对象 - 可能会深入很多级别。

我想迭代所有属性,以便对象创建 div,数组创建 div,字符串属性创建包含文本的 span。

{ "string" : "some text", "object" : { "array" : [ "text" ] } }

上面的对象将呈现为:

<span>some text</span>
<div>
  <div>
    <span>text</span>
  </div>
</div>

但通常结构要复杂得多。我应该如何去完成这件事是玉?

I have an object of mixed type properties - some strings, some arrays of strings, some objects containing arrays of strings - that can potentially go many levels deep.

I would like to iterate over all properties so that an object creates a div, an array creates a div, and a string property creates a span to contain the text.

{ "string" : "some text", "object" : { "array" : [ "text" ] } }

The above object would render as:

<span>some text</span>
<div>
  <div>
    <span>text</span>
  </div>
</div>

But usually much more complex structures. How should I go about accomplishing this is Jade?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

提赋 2024-12-22 10:24:37

你问这个问题已经有一段时间了,但我想 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)

It's been a while since you asked, but mixin is your friend, I think. I haven't tried it out, but if mixins support recursion, this should work:

mixin parseObject(obj)
  div
    - each val, key in obj
      - if (typeof val === 'string')
        span #{val}
      - else if (typeof val === 'object')
        mixin parseObject(val)

Then in the body of your .jade file, call mixin parseObject(rootObject).

只是在用心讲痛 2024-12-22 10:24:37

现在好像支持递归了。我已经成功地使用了该功能,并进行了一些小的调整;调用该函数时需要使用 mixin 关键字。

mixin parseObject(obj)
  div
    each val, key in obj
      if typeof val === 'string'
        span #{val}
      else if typeof val === 'object'
        mixin parseObject(val)

Recursion seems to be suppported now. I have successfully used the function with a minor tweak; you need to use the mixin keyword when calling the function.

mixin parseObject(obj)
  div
    each val, key in obj
      if typeof val === 'string'
        span #{val}
      else if typeof val === 'object'
        mixin parseObject(val)
允世 2024-12-22 10:24:37

在现代版本的 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 )

In the modern version of Jade it's look like

mixin parseObject( obj )
  div
    each val in obj
      if typeof val === 'string'
        span= val
      else if typeof val === 'object'
        +parseObject( val )

Then in the body of your .jade file, call

+parseObject( rootObject )

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文