CKEditor новый экземпляр всегда выгружается


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

Я использую следующий JS для инициализации редактора:

var initEditor = function() {
  $('.js-editor-wrap').html("<textarea id='editor'></textarea>");

  var editor = CKEDITOR.replace('editor', {});

  editor.on('loaded', function() {
    console.log('editor loaded');
  });

  editor.on('instanceReady', function() {
    console.log('instance ready')
  });
}

И следующее, чтобы уничтожить редактора:

var destroyEditor = function() {
  if (CKEDITOR.instances['editor']) {
    CKEDITOR.instances['editor'].destroy(true);
    $('#editor').off().remove();
  }
}

Первая инициализация редактора работает так же, как и ожидалось, но последующие инициализации создают экземпляр редактора со статусом "unloaded", который никогда не запускает события "loaded" или "instanceReady". Я ничего не вижу. ошибки в консоли.

Есть идеи, что может быть причиной этого?

Это, безусловно, похожий вопрос на следующий, но достаточно отличающийся, чтобы я думаю, что он заслуживает своего собственного вопроса: экземпляр CKEditor уже существует

1 3

1 ответ:

После гораздо большего копания и благодаря jsfiddle от Jey Dwork, я понял, где проблема здесь. Мой конфигурационный файл CKEditor добавляет пару плагинов, которые ссылаются на файлы lang, которые были неправильно названы. По какой-то причине, когда эти плагины были включены вместе, они вызвали не полную загрузку редактора во время Второй инициализации.

Удаление файлов lang и ссылки на них в определениях плагинов решили проблему. Очень жаль, что не было какой-то ошибки. это было спровоцировано вокруг этого. Но все хорошо, что хорошо кончается.