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 и ссылки на них в определениях плагинов решили проблему. Жаль, что вокруг этого не было ошибки. Все хорошо, что хорошо кончается, хотя.