#javascript #ckeditor #ckeditor4.x
#javascript #ckeditor #ckeditor4.x
Вопрос:
Я пытаюсь использовать флаг асинхронности, предоставляемый определением команды CKE, как показано в здесь примере.
У меня есть команда, которая открывает диалоговое окно пользовательского интерфейса jQuery, в котором вводятся некоторые данные от пользователя. Эта часть работает нормально. Когда диалоговое окно закрывается (т. Е. Пользователь нажимает OK или Cancel), я пытаюсь сделать так, как показано в примере CKE, и вручную вызвать editor.fire("afterCommandExec")
, что приводит к следующей ошибке:
Ошибка неперехваченного типа: не удается прочитать свойство ‘command’ неопределенного
Это происходит отсюда:http://docs.cksource.com/ckeditor_api/symbols/src/plugins_undo_plugin.js.html (строка 69)
if ( undoManager.enabled amp;amp; event.data.command.canUndo !== false )
undoManager.save();
Я понимаю, почему возникает ошибка: данные о событии не отправляются вместе с вызовом на fire()
. Однако в их примере также нет отправленных данных о событиях. Я могу вручную запустить событие с помощью команды в качестве данных, и, похоже, это работает:
editor.fire("afterCommandExec", {
command: editor.getCommand('link')
});
Однако это не похоже на правильный способ сделать это. Что я делаю не так?
Комментарии:
1. Можете ли вы предоставить полный пример? (с ошибкой .. но, по крайней мере, с полным кодом).
2. Это сложно, потому что это в большом проекте с большим количеством библиотек, но это похоже на то, что могло бы произойти: jsfiddle.net/leetbruh/hdhyg7hh
Ответ №1:
Я бы сказал, что приведенный пример представляет собой минимальный код о том, как использовать, а не реальный рабочий пример, и именно поэтому он может не сработать.
Если ваша ошибка исходит из системы отмены, отметьте, что ваша команда не использует ее с canUndo = false
и обработайте добавление в стек отмены самостоятельно, вместо того, чтобы полагаться на него автоматически.
Комментарии:
1. Возможно, вы правы, я просто думаю, что это странно, потому что диспетчер отмены — это стандартный плагин, который довольно распространен. То, что вы предлагаете, сработало бы, но я надеялся, что вместо этого я смогу запустить отмену из события afterCommandExec. Спасибо за ввод