2017-07-16 18 views
5

Jak mogę odsłuchać zdarzenia "input" w ckeditor5? Chciałbym, aby móc korzystać z Observables tak:Słuchaj zdarzeń wystrzelonych po zmianie treści w CKEditor 5

Observable.fromEvent(this.editor, "input").debounceTime(250).subscribe(() => {}); 

Do tej pory byłem w stanie słuchać niektórych zdarzeń tak:

Observable.fromEvent(this.editor.editing.view, 'selectionChangeDone').subscribe(() => { }); 

Ale nie znaleźć nazwę zdarzenia, które zostanie zwolnione, gdy tylko dane zostaną zmienione w edytorze. Próbowałem "zmienić", ale wystrzeliwuje się tylko wtedy, gdy edytor się skupi.

Odpowiedz

11

Potrzeba prawdopodobnie potrzeba jest zdarzenie changesDone wystrzeliwane przez dokument redaktora.

editor.document.on('changesDone',() => { 
    console.log('The Document has changed!'); 
}); 

Wystarczy pamiętać, że będzie to również ogień, gdy wystąpi zmiana w dokumencie, który obejmuje zmianę wyboru itd. Aby uzyskać dokładniejsze informacje, słuchać przypadku change:

editor.document.on('change', (evt, data) => { 
    console.log(evt, data); 
}); 
+0

Słuchanie zdarzenia "zmiana" na "dokumencie" zamiast "edycji.view" działa jak wdzięk, dziękuję ;-) – ssougnez

+1

Po prostu FYI, v5 to nic innego jak v4 pod względem przechowywania i manipulacji danymi. Całkowicie oddzieliliśmy widok (w skrócie od "editor.editing.view") od modelu dokumentu ('editor.document'). Dokumentacja i próbki już wkrótce. Bądźcie czujni! – oleq

5

Przede wszystkim , Widzę, że używasz Observable.fromEvent, który wydaje się być częścią RxJS i działa ze zdarzeniami jQuery. CKEditor 5 nie używa RxJS ani jQuery. Używa custom events i custom observables, które są czymś innym niż obserwowalne, którego chcesz użyć.

więc pamiętać, że:

Observable.fromEvent(this.editor.editing.view, 'selectionChangeDone'); 

nie jest właściwym sposobem słuchania imprezy i działa prawdopodobnie tylko z powodu jakiegoś duck typing.

Właściwym sposobem słuchać na imprezach CKE5 jest:

this.editor.editing.view.on('selectionChangeDone',() => { /*...*/ }); 

Po drugie, „wejście” nie jest wydarzeniem, ale komenda. Jeśli chcesz słuchać w tym wykonanie poleceń można zrobić:

this.editor.commands.get('input').on('execute', (evt, args) => { 
    console.log(evt, args); 
}); 

Jednak jest to bardzo świeży API, które zostaną wprowadzone w następnej wersji ckeditor-core (0.9.0), więc trzeba użyć obecny oddział główny, aby go użyć.

+0

Dzięki za precyzję. Odpowiedź dostarczona przez oleq pasuje mi jednak lepiej ;-) – ssougnez

Powiązane problemy