vue中如何在watch监听中新增tinymce的撤销?

作者站长头像
站长
· 阅读数 11
tinymce.undoManager.add()
tinymce.undoManager.transact()

我知道以上两个命令是记录用户操作用于回滚的方法在我的项目中需要监听 App.vue 传递过来的值从而替换编辑器中的展示的文档(dom)所以我将 tinymce 运行在了 watch 中,代码如下:

<script setup>
import tinymce from 'tinymce/tinymce' // tinymce 默认 hidden,不引入则不显示编辑器
import Editor from '@tinymce/tinymce-vue'

watch(() => {
  return props.propChild
}, (val) => {
  console.log('子组件接收', val)
  switch (val.edit) {
    case 'click':
      tinymce.activeEditor.getBody().querySelector('#' + val.id).scrollIntoView()
      break
    case 'edit':
      tinymce.activeEditor.getBody().querySelector('#' + val.id).innerText = val.idName
      tinymce.undoManager.add()
      // tinymce.undoManager.transact()
      break
  }
}, {
  deep: true
})
</script>

但是在项目运行后,页面报错

tinymce.activeEditor.getBody().querySelector('#' + val.id).scrollIntoView() // 可以执行
tinymce.activeEditor.getBody().querySelector('#' + val.id).innerText = val.idName // 可以执行
tinymce.undoManager.add() // TypeError: Cannot read properties of undefined (reading 'add')
tinymce.undoManager.transact() // TypeError: Cannot read properties of undefined (reading 'transact')

请问是为什么呢?

回复
1个回答
avatar
test
2024-06-21

经查询,实际节点应该是 tinymce.activeEditor.undoManager

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容