Vue组件内部实现一个双向数据绑定

来源于:阿贤博客javascript

思路:父组件经过props传值给子组件,子组件经过 $emit 来通知父组件修改相应的props值,具体实现以下:
import Vue from 'vue'
const component = {
    props: ['value'],
      template: `
        <div>
            <input type="text" @input="handleInput" :value="value">
        </div>
    `,
      data () {
          return{}
      },
      methods: {
        handleInput (e) {
            // 不能在组件内修改props的参数,因此须要使用$emit通知父组件修改
            this.$emit('input', e.target.value)
        }
    }
}

new Vue({
    components: {
        CompOne: component
      },
      el: '#root',
      template: `
        <div>
          <comp-one :value1="value" @input="value = arguments[0]"></comp-one>
        </div>
      `,
  data () {
    return{
        value: '123'
    }
  }
})

来源于:阿贤博客php

相关文章
相关标签/搜索