点击我的应用程序的一堆按钮可以创建不同的CKEditor自定义实例,在textarerea内部创建一个grid whith layoutmanager插件。创建的编辑器位于引导模式的主体内。
当第一次单击其中一个按钮时,一切正常,我可以获得正确的开始元素,并且可以从我的应用程序正确地评估可编辑区域。 当我处理modal i destroy时,CKEditor的实例和相关视图(该应用程序也涉及Backbone.js)被删除:
$('#tallModal').one('hidden.bs.modal', function(e) {
if (this.ckeditor) {
CKEDITOR.instances[this.model.get("uniqueId")].destroy();
this.ckeditor = null;
}
this.view.close();
}.bind(this)).modal('hide');
this.ckeditor
创建如下:
this.ckeditor = $("#"+ this.model.get("uniqueId")).ckeditor(config.rte.ckeditor, $deferred.resolve).editor;
当我点击另一个按钮时,模态显示正确的编辑器实例,但是当我的代码中的这一行(this._editor
是别名this.ckeditor
)时:
return this._editor.getSelection().getStartElement();
引发以下错误:
TypeError: Cannot read property 'getStartElement' of null
调试代码我发现当编辑器被销毁然后再次创建时,编辑器对象(this._editor
)具有属性status="destroyed"
,而当一切正常工作时status="ready"
我尝试了这个解决方案CKEditor issue with Bootstrap modal和其他许多没有运气的人,无论如何都会调用this.$element.trigger( 'focus' );
行。
答案 0 :(得分:1)
我找到了答案:
this._editor = CKEDITOR.instances[this.model.get("uniqueId")];
我在initialize
的{{1}}方法中有这一行,但是这样我才得到对被破坏实例的引用。
Backbone.View
内的编辑器实例必须"刷新"每次我想用以下结果做某事:
this._editor