vue.js - 在 Vue 中显示 DocumentFragment

标签 vue.js documentfragment

我正在使用一个库(prosemirror),它从数据库获取的 json 中为我提供一个 DocumentFragment。现在我想在我的组件中显示它。如何?两个小时的谷歌搜索没有给我带来任何结果。

  resolveContent: function () {
    let contentNode = schema.nodeFromJSON(content)
    let fragment = DOMSerializer.fromSchema(schema).serializeFragment(contentNode.content)
    return fragment
  }

在我的组件中使用它,例如

  p(v-html="resolveContent()")

  p {{resolveContent()}}

打印

  [object DocumentFragment]

最佳答案

处理DocumentFragment在 Vue.js 中,您需要等到 Vue 的 mounted钩子(Hook)起火。我将创建一个包装组件,它“渲染”一个空的 <div/> 。然后,连接到 mounted并使用标准 DOM 命令插入片段(例如 Node.appendChild() )

const FragmentBootstrapper = Vue.extend({
  mounted() {
    const fragment = resolveContent()

    this.$el.appendChild(fragment)
  },
  render(h) {
    return h("div") // becomes `this.$el`
  }
}

一开始这可能会感觉很奇怪,但是当您认为 Vue 是一个渲染层抽象时,它就最有意义了。因此,在它自己的渲染钩子(Hook)期间,它期望只处理它自己的VDOM。它提供mounted钩子(Hook)以支持各种用例,即这个。

关于vue.js - 在 Vue 中显示 DocumentFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58664509/

相关文章:

javascript - DocumentFragment 丢失了我的部分内容

vue.js - 如何使用 Vue 将文件数据 POST 到预签名的 S3 URI?

javascript - Vuejs如何按多个元素进行过滤

javascript - 类型错误 : Cannot read property 'push' of undefined [VueJs]

javascript - 最小的 JavaScript 所见即所得 - 如果已存在,则从所选文本中删除标签

reactjs - 如何使用 React 渲染 <template/> 标签?

javascript - 附加一个 DocumentFragment 会导致多少回流?

javascript - 使用来自 node_modules 的 SVG

javascript - Vue路由器返回上一个父路由

javascript - 无法创建存储 td、tr 或 th 的 DocumentFragment?