2015-09-07 3 views
0

Использование версии 4.4.7Правильно уничтожив экземпляр CKEditor

мои CKEditor нагрузки в модальном окне, которое открывается на странице. Я заметил, что когда я снова открываю модальный, редактор не загружается. Решение заключалось в том, чтобы уничтожить экземпляр, а затем повторно применить его в текстовом поле.

Но я не могу, кажется, уничтожить его правильно. На основании this answer я попытался все следующие попытки, но я получаю сообщение об ошибке:

TypeError: a is null 
http://domaim/ckeditor/ckeditor.js 
Line 778 

Я попробовал следующее (для простоты, я Комбинируя все попытки в одном блоке кода, но они были попробовал один за другим):

var editor = CKEDITOR.instances.mail_message; 
    if (editor) { 
     console.log('instance exists'); 

     // ATTEMPT 1: 
     if (CKEDITOR.instances.mail_message) CKEDITOR.instances.mail_message.destroy(); 
     // -------------------------------------- 


     // ATTEMPT 2: 
     editor.destroy(true); 
     // ------------------------------------- 


     // ATTEMPT 3: 
     CKEDITOR.instances.mail_message.destroy(false); 
     // -------------------------------------- 


     // ATTEMPT 4: 
     for(name in CKEDITOR.instances) 
     { 
      CKEDITOR.instances[name].destroy() 
     } 
     // --------------------------------------- 

     console.log('destroyed'); 
    } 
// RECREATE: (but code errors out before this, with above-mentioned error. 
CKEDITOR.replace('mail_message', { toolbar: 'basic' }); 

UPDATE Я обнаружил, что только с помощью метода replace воссоздает - даже без разрушения первого. я думаю, это решение.

ответ

1

У меня возникла такая же проблема, когда я хочу перезагрузить CKeditor, и этот код решает мою проблему. Чтобы разрушить старое использование экземпляра,

if(CKEDITOR.instances.editor1) 
CKEDITOR.instances.editor1.destroy(); 

мы будем проверять, если экземпляр уже создан или нет. и вновь загрузить CKEditor, мы воссоздать объект CKE с помощью

CKEDITOR.replace(); 
+0

Спасибо - как уже упоминалось, это идентично мне «попытка 1» выше, которая, похоже, не работает – kneidels

0

Я уверен, думать о прохождении верно в качестве параметра с уничтожить, если вы собираетесь переинициализировать редактор. У меня есть сетка, и я нажимаю на каждую строку, чтобы вытащить информацию в модальном диалоге jquery. Если я не передаю «true» в качестве параметра, я обнаружил, что setData() не работает и, хотя I am установка данных и I сделал уничтожить предыдущий экземпляр, старые данные появляются в редакторе. Поэтому использование:

var editor = CKEDITOR.instances ['txt_LH_Update_Body']; if (editor) {editor.destroy (true); }