angularjs中ckeditor的destroy问题

Posted PeaFull

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularjs中ckeditor的destroy问题相关的知识,希望对你有一定的参考价值。

项目中,在切换了页面的tab页后会发现上传图片的操作报错,检查后发现问题根源是切换了tab页重新加载页面时ckeditor又会创建一次,这个时候的ckeditor已经不是第一次创建的那个了,所以上传图片的方法中会报错。

解决方法:在ckeditor每次创建之前判断一下,如果有ckeditor则destroy掉,重新创建新的,保证页面上始终只有一个ckeditor,具体如下:

  • 在ckeditor的directive中:
    console.log(CKEDITOR.instances.myCKeditor ); //①
    if(CKEDITOR.instances.myCKeditor){//如果CKEDITOR已经创建存在则执行destroy                                
        CKEDITOR.instances.myCKeditor.destroy();
    }
    console.log(CKEDITOR.instances.myCKeditor);  //②   
    var ckeditor=CKEDITOR.replace(<htmlTextAreaElement>element[0]);//保持始终创建新的CKEDITOR
    console.log(CKEDITOR.instances.myCKeditor);  //③
  • 说明:其中,myCKeditor是页面中textarea的name值
    <textarea ckeditor-Directive name="myCKeditor"></textarea>
  • 三个console.log打印的情况如下:
    •   首次进入页面时由于之前是没有ckeditor存在的,所以①和②都是undefined,执行创建代码后③是创建出来的ckeditor对象;
    •   切换了tab页后,①是之前创建的ckeditor对象,执行了destroy()方法后②是undefined,执行创建代码后③是新的ckeditor对象。

 

以上是关于angularjs中ckeditor的destroy问题的主要内容,如果未能解决你的问题,请参考以下文章

ckeditor+angularjs directive

ckeditor和angularjs之间的绑定数据[重复]

将Ckeditor值绑定到angularjs和rails中的模型文本

如何使用ng-repeat获取ckeditor的实例?

angular+ckeditor最后上传的最后一张图片不会被添加(bug)

ckeditor中 config.js等通过ckeditor.js引入文件手动修改方法