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();
  }
}

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам