Я пытаюсь установить содержимое компонента inline Vue CKEDITOR 4 через v-model
, несколько раз. Моя проблема в том, что это работает, пока пользователь не введет текст в редакторе. После этого все, что я передаю v-model
, перезаписывается набранным пользователем текстом.
Для дальнейшего разъяснения я определил шаги и код, который я использую:
Шаги для Воспроизведите:
- Явно установите значение редактора 'aaa' через v-модель. (изменение не для пользователя)
- Введите 'bbb' в редакторе (чтобы у нас было 'aaabbb') (изменение для пользователя)
- Явно установите значение редактора 'ccc' через v- модель. (изменение не для пользователя)
Ожидаемое поведение:
- Значение 'ccc' установлено и показано.
Фактическое поведение:
- В редакторе установлено значение 'ccc'.
- Установлено значение 'aaabbb' (перезаписывается значение в 1.) и показано.
Код:
<template>
<div>
<ckeditor
v-model="editorData"
type="inline"
/>
</div>
</template>
export default class EditorWrapper extends Vue {
// Vue component property that contains data sent to editor in steps 1. and 3.
@Prop({ type: String, default: '' })
externalData!: string;
// Vue data variable that is bound 2-way to the editor
editorData: string;
// watch for changes to the 'externalData' property
@Watch('externalData')
onPropertyChange(externalData) {
// explicitly set the editor text when not changed by the user (steps 1. and 3.)
this.editorData = externalData;
}
// watch for changes to the editor 'v-model' data (user and non-user changes)
@Watch('editorData')
onEditorDataChange(data) {
// this outputs the editor text - 'ccc', then 'aaabbb' - which is wrong
console.log(data);
}
}