我在Vue项目里集成Summernote,初始化后英文能正常输入,但一打中文就卡住,候选框不出现,甚至整个编辑器变白。试过切换浏览器和更新依赖都没用。
下面是我的组件代码:
<template>
<div id="summernote"></div>
</template>
<script>
export default {
mounted() {
$('#summernote').summernote({
height: 300,
lang: 'zh-CN'
});
}
}
</script>
首先,确保你已经正确引入了jQuery和Summernote,并且版本兼容。然后,我们可以稍微调整一下代码,确保在Vue组件销毁时也销毁Summernote实例,避免内存泄漏和其他潜在问题。
修改后的代码如下:
这里的关键改动是使用
ref来获取DOM元素,而不是直接通过ID选择器。这样Vue和jQuery之间的协作会更顺畅一点。另外,别忘了在组件销毁之前清理Summernote实例,这一步有时候能解决一些奇怪的问题。希望这个方法能帮到你,如果还有问题,检查一下控制台有没有错误信息,或者尝试单独在非Vue环境中运行Summernote看看是否有同样的问题。
Summernote的
lang: 'zh-CN'只是告诉编辑器用中文,但它需要对应的语言包才能正常工作。你只引了核心库,没引中文语言包。解决办法很简单,引入这个js:
或者如果你是用CDN的方式:
注意版本号要对上,summernote和lang文件的版本必须一致。
另外提醒一下,用jQuery的方式在Vue里搞DOM操作其实不太规范,以后可以考虑换成vue-quill-editor或者tiptap这些更贴合Vue的富文本编辑器。不过当前问题按上面那样改就能解决。