VueJs: Textarea entrée de liaison

Je suis à essayer de comprendre comment détecter le changement de la valeur sur le textarea de l'intérieur du composant.

Pour l'entrée nous pouvons simplement utiliser

<input
  :value="value"
  @input="update($event.target.value)"
>

Cependant sur textarea cela ne fonctionne pas.

Ce que je suis en train de travailler, c'est de l'CKEditor composant, qui devrait mettre à jour wysiwyg contenu où le modèle de la valeur du composant parent (joint à ce composant enfant) est mis à jour.

Mon Editor composant actuellement ressemble à ceci:

<template>
    <div class="editor" :class="groupCss">
        <textarea :id="id" v-model="input"></textarea>
    </div>
</template>

<script>
    export default {
        props: {
            value: {
                type: String,
                default: ''
            },
            id: {
                type: String,
                required: false,
                default: 'editor'
            }
        },
        data() {
            return {
                input: this.$slots.default ? this.$slots.default[0].text : '',
                config: {
                    ...
                }
            }
        },
        watch: {
            input(value) {
                this.update(value);
            }
        },
        methods: {
            update(value) {
                CKEDITOR.instances[this.id].setData(value);
            },
            fire(value) {
                this.$emit('input', value);
            }
        },
        mounted () {
            CKEDITOR.replace(this.id, this.config);
            CKEDITOR.instances[this.id].setData(this.input);
            this.fire(this.input);
            CKEDITOR.instances[this.id].on('change', () => {
                this.fire(CKEDITOR.instances[this.id].getData());
            });
        },
        destroyed () {
            if (CKEDITOR.instances[this.id]) {
                CKEDITOR.instances[this.id].destroy()
            }
        }
    }
</script>

et je l'inclus dans le composant parent

<html-editor
    v-model="fields.body"
    id="body"
></html-editor>

cependant, chaque fois que composant parent du modèle de changement de la valeur - il ne déclenche pas le spectateur de manière à ne pas la mise à jour de l'éditeur de fenêtre.

J'ai seulement besoin de update() méthode appelée lorsque le parent du composant de modèle fields.body est mis à jour.

Un pointeur comment pourrais-je l'aborder?

OriginalL'auteur Sebastian Sulinski | 2017-07-09