vue how to access v-model from child component

2019-08-24 10:08发布

问题:

my child component is like this

<editor v-model="edit_thread.body"></editor>

and then I access the component from inside like this

<template>
    <div>
        <input :value="this.value">
    </div>
</template>

<script>
    export default {
        data() {
            return {
                value: this.edit_thread.body
            }
        }
    }
</script>

not working, I miss something?

回答1:

To use v-model on custom components, the component needs to:

  • have a prop (not a data property) named value:

    <template>
      <div>
        <input :value="value">
      </div>
    </template>
    
    <script>
    export default {
      props: ['value']
    }
    </script>
    
  • and emit an input event with new values:

    <template>
      <div>
        <input @input="$emit('input', $event.target.value)">
      </div>
    </template>
    

demo



标签: vue.js vuejs2