今天调整项目需求,里面涉及到需要初始化多个百度编辑器。但是遇到这样一个问题,百度编辑器在第一次进入时,编辑器容器未初始化,再次刷新容器初始化成功。
通过UE.instances查看已初始化的实例却发现,该编辑器实例已存在,也就是说只是没有执行render函数
但是细看代码才发现有个坑,项目是单页化的,不涉及页面刷新,所以当我第二次进入页面时,其实编辑器实例已经保存在instances中了!!!
查看UE源码发现如下代码:
这段可以看到,在调用UE.getEditor(‘_editor’)初始化UEditor时,先从放置编辑器的容器instances中获取,没有实例才实例化一个Editor,这就是引起问题的原因。
所以要解决上述问题,比较简单的办法就是每次进入时先将原来的实例删除,代码如下:
UE.delEditor('_editor');
var ue = UE.getEditor('_editor');
当然也可以如下办法处理:
UE.getEditor('_editor').render('_editor');
希望以上内容对大家有所帮助。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。