首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Vue 3脚本设置中将TipTap绑定到父v模型?

如何在Vue 3脚本设置中将TipTap绑定到父v模型?
EN

Stack Overflow用户
提问于 2022-06-03 11:12:43
回答 1查看 665关注 0票数 1

我试图使用tiptap作为子组件,并将其内容传递给父v-model,但是tiptap的文档似乎只提供了如何在没有使用不同API的script setup的情况下做到这一点的信息。

这是我的parent组件:

代码语言:javascript
复制
<template>
    <cms-custom-editor v-model:modelValue="state.content"/>
    <p>{{state.content}}</p>
</template>


<script setup>
import CmsCustomEditor from '../../components/backend/cms-custom-editor.vue'
import {reactive} from "vue";

const state = reactive({
    content: '<p>A Vue.js wrapper component for tiptap to use <code>v-model</code>.</p>',
})

</script>

这是带有childtiptap组件

代码语言:javascript
复制
<template>
  <div id="cms-custom-editor" class="cms-custom-editor">
    <editor-content :editor="editor"/>
  </div>
</template>


<script setup>
import {useEditor, EditorContent} from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'

const props = defineProps({
    modelValue: {
        type: String,
        default: ''
    }
})

const emit = defineEmits(['update:modelValue'])

const editor = useEditor({
    extensions: [StarterKit],
    content: props.modelValue,
    onUpdate: () => {
        emit('update:modelValue', editor.getHTML())
    }
})
</script>

一旦我在编辑器字段中键入某些内容,此代码行就会失败:

代码语言:javascript
复制
emit('update:modelValue', editor.getHTML())

并抛出此错误:

代码语言:javascript
复制
Uncaught TypeError: editor.getHTML is not a function
    at Editor2.onUpdate (cms-custom-editor.vue?t=1654253729389:28:42)
    at chunk-RCTGLYYN.js?v=89d16c61:11965:48
    at Array.forEach (<anonymous>)
    at Editor2.emit (chunk-RCTGLYYN.js?v=89d16c61:11965:17)
    at Editor2.dispatchTransaction (chunk-RCTGLYYN.js?v=89d16c61:12252:10)
    at EditorView.dispatch (chunk-RCTGLYYN.js?v=89d16c61:9138:27)
    at readDOMChange (chunk-RCTGLYYN.js?v=89d16c61:8813:8)
    at DOMObserver.handleDOMChange (chunk-RCTGLYYN.js?v=89d16c61:8924:77)
    at DOMObserver.flush (chunk-RCTGLYYN.js?v=89d16c61:8575:12)
    at DOMObserver.observer (chunk-RCTGLYYN.js?v=89d16c61:8455:14)

我使用了docs的方法(第5章,v模型),正如我所说的,它不是为script setup而设计的。

EN

回答 1

Stack Overflow用户

发布于 2022-06-03 13:59:07

伙计,医生们真搞不懂。他们混淆了标准的composition apiscript setup。不管怎样,这就是它的工作原理:

代码语言:javascript
复制
const editor = useEditor({
    extensions: [StarterKit],
    content: props.modelValue,
    onUpdate: ({editor}) => {
        emit('update:modelValue', editor.getHTML())
    }
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72488750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档