prosemirror 的令人敬畏的tiptap 包装器附带了很好的文档,但它缺乏一些说明如何在开发自定义扩展时处理一些(我认为)基本场景。
我的问题是在 vue 组件的上下文中如何在节点上调用 toggleWrap。我找到了使用事务并允许删除的示例-但我想要的是清除节点,使节点的文本保持不变。
get view() {
return {
directives: {
"click-outside": clickOutside
},
props: ['node', 'updateAttrs', 'view', 'selected', 'getPos'],
data() {
return {
showMenu: false
}
},
computed: {
href: {
get() {
return this.node.attrs.href
},
set(href) {
this.updateAttrs({
href,
})
},
},
},
methods: {
// deleteNode() {
// let transaction = this.view.state.tr // tr - transaction
// let pos = this.getPos()
// transaction.delete(pos, pos + this.node.nodeSize)
// this.view.dispatch(transaction)
// },
stopLinkPropagation(){
return null;
},
hideMenu(){
this.showMenu = false
}
},
template: `<div @click="showMenu = true" v-click-outside="hideMenu">
<a class="email-button" @click.prevent="stopLinkPropagation" :href="href" v-text="node.textContent"></a>
<input class="iframe__input" type="text" v-model="href" v-if="showMenu" />
<button @click="clearNode">clear button wrap</button>
</div>`,
}
}
任何帮助都是极好的。谢谢。