【问题标题】:Output html using a Vue template tag, but without having a nested element使用 Vue 模板标签输出 html,但没有嵌套元素
【发布时间】:2018-08-08 15:11:09
【问题描述】:

我的首要问题是:在 Vue 中,如何在迭代集合时输出内部 html,但不必将其包装在额外的 div 或 span 中。

具体来说:我正在从 Vue 模板中迭代 js 对象数组。每个对象都有一个输出 html 的“渲染”方法。

这行得通:

template:
`<div id="container">
    <template v-for="element in elements">
        <span v-html="element.render()"></span>
    </template>
</div>
`,

但我想做类似下面的事情,因为我不希望将输出包装在 div 或 span 中。此代码不会产生错误,但也不会产生输出:

template:
    `<div id="container">
        <template v-for="element in elements" v-html="element.render()">
        </template>
    </div>
    `,

在一个完美的世界里,我会做这样的事情,但是小胡子格式不能输出html:

<div id="container">
    <template v-for="(element, index) in elements">
        {{ element.render() }}
    </template>
</div>

想要的输出:

<div id="container">
    (output of element.render())
    (output of element.render())
    (output of element.render())
    etc.
</div>

感谢您的指导,

L

【问题讨论】:

  • 你检查过你提到的第一个例子的输出吗?

标签: vue.js


【解决方案1】:

彻底删除&lt;template&gt;标签,在&lt;script&gt;标签中使用渲染功能。类似这样,但此代码未经测试,仅用于演示。

export default {
  ...
  render (h) {
    return h('div', this.elements.map(function (elm) {
      return h(elm.render())
    })
  }
}

【讨论】:

  • 非常感谢弗拉迪斯拉夫。这让我朝着正确的方向前进。
  • 很高兴为您提供帮助:)
猜你喜欢
  • 2018-09-19
  • 1970-01-01
  • 2012-07-09
  • 2010-12-08
  • 2019-06-16
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多