codemirror官方也是知道这个问题的,并且也算是出了一个解决方案吧。
display/autorefresh.js(自动刷新插件)
首先这个插件在需要频繁切换显示隐藏编辑器的场景下肯定是不行的,它仅限首次可见时触发。
不过从上述描述中我们可以看到有一个
refresh的方法,可以主动刷新编辑器。从编辑器自身去解决这个问题的话恐怕已经很难了,所以不妨绕一下,在我们执行切换显示/隐藏的操作时,调用一下这个方法就可以了。
比如
this.codeValue = '122' // 更改值
this.visible = true // 显示编辑器
setTimeout(() => {
cm.refresh() // 刷新编辑器
},1)