拆分 v-model

拆分 v-model

import Vue from 'vue'

const component = {
  props: ['valueOfSon'],
  template: `
    <div>
      <input type="text" @input="handleInput" :value=valueOfSon>
    </div>
  `,
  methods: {
    handleInput (e) {
      this.$emit('inputToParent', e.target.value)
    }
  }
}

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

稍微解释下,这里使用了父子组件,初始化的时候,父组件中的valueOfParent通过prop传递到子组件中,然后在子组件中使用@input监测输入事件,一旦有输入事件,就调用handleInput方法,方法中使用$emit触发父组件中inputToParent事件,并且还有一个参数,也就是input框中的值,其中 e 代表event,父组件的@inputToParent收到信号后,调用了后面的方法,也就是给valueOfParent赋值,赋的值为第一个参数,从而实现了v-model的效果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 10,452评论 0 29
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • 林殊-梅长苏,在生命与国家之间,在爱情和国家之间,放弃自己,选择大义,外表清肃平静得让你以为他一心只有国仇家恨。 ...
    窦睿2017阅读 5,189评论 0 0
  • 那一天 你的时间停止了 停止在了二十四岁 隔着玻璃 我看着你的脸 深陷的双颊 没有血色 曾经 你是那迟暮的小院里 ...
    阎浮小学僧阅读 3,244评论 9 8
  • 001 前段时间,浙江一名30多岁的龚女士因左眉处被磕到引起的红疹般的肿块来到医院看就诊,未曾想到医生竟从肿块内取...
    神采飞扬zyl阅读 1,748评论 0 0