CKEditor 5 как получить события щелчка, обновления и удаления из любого виджета / модели / представления

Как я могу получать уведомления о модели CKEditor 5, просмотре и событиях щелчка, обновления и удаления виджета?

Предположим, что у меня есть собственная реализация плагина, похожая на плагин ссылки или плагин подсветки. Как я могу получить следующие события?

  • Когда пользователь нажимает на ссылку / выделенный элемент.
  • Когда пользователь обновляет внутреннее содержимое выделенного элемента.
  • Когда пользователь удаляет всю выделенную ссылку или элемент выделения из редактора.

Элемент может быть элементом модели / элементом представления / или виджетом.


person Shrinath Shenoy    schedule 10.08.2018    source источник
comment
Вы когда-нибудь находили ответ?   -  person MTilsted    schedule 30.08.2018
comment
@MTilsted нет   -  person Shrinath Shenoy    schedule 30.08.2018


Ответы (1)


Вот код, который я использую. Он должен быть в методе init () плагина. Не знаю, правильно ли это сделать, но у меня он работает (тм).

            const editor = this.editor;
            const model=editor.model;
            const editingView=editor.editing.view;
            editingView.addObserver( ClickObserver );
            const viewDocument = editor.editing.view.document;

            this.listenTo( viewDocument, 'click', (event,data) => {
                const target=data.target; // This is the view the user clicked on 
                const modelObj=editor.editing.mapper.toModelElement(target);
// modelObj is the model object for the element the user clicked on. Now you just need to test if clicking on this model is something you are interested in.    

    //          console.log(modelObj);
            } );

Обратите внимание, что это, похоже, не сработает, если вы щелкнете AttributeElement (например, жирный текст). В этом случае вы можете вызвать target.parent, пока не получите результат.

person MTilsted    schedule 30.08.2018