当前位置: 首页 > article >正文

【VUE】Vue2中 v-model 的原理

V-model 是用来监听用户事件然后更新数据的语法糖。

其本质还是单向数据流,内部是通过绑定元素的 value 值向下传递数据,然后通过绑定 input 事件,向上接收并处理更新数据。

单向数据流:父组件传递给子组件的值子组件不能修改,只能通过emit事件让父组件自个改。

// 比如
<input v-model="sth" />
// 等价于
<input :value="sth" @input="sth = $event.target.value" />

给组件添加 v-model 属性时,默认会把value 作为组件的属性,把 input作为给组件绑定事件时的事件名:

// 父组件
<my-button v-model="number"></my-button>
// 子组件
<script>
export default {
  props: {
    value: Number, //  属性名必须是 value
  },
​
  methods: {
    add() {
      this.$emit('input', this.value + 1) // 事件名必须是 input
    },
  }
}
</script>

如果想给绑定的 value 属性和 input 事件换个名称呢?

在 Vue 2.2 及以上版本,你可以在定义组件时通过 model 选项的方式来定制 prop/event:

<script>
export default {
  model: {
    prop: 'num', // 自定义属性名
    event: 'addNum' // 自定义事件名
  }
}
</script>

http://www.kler.cn/news/353639.html

相关文章:

  • 使用 Bash 脚本实现交互式用户输入(参数选择)
  • vue3基础入门以及常用api使用
  • 视频智能分析平台LiteAIServer摄像机视频分析软件下载水土识别算法方案
  • 爬虫post收尾以及cookie加代理
  • BWA-mem Smith-Waterman 算法
  • 【VUE】Vue2中如何监听(检测)对象或者数组某个属性的变化
  • 第七课:Python学习之算数运算符
  • 强化学习之DQN算法
  • yocto编辑软件包-devtool的使用方法
  • 微服务中的负载均衡算法与策略深度解析
  • k8s--二进制包部署及常见报错解决方法
  • 请用python写一个小程序,把浏览器中打开的页面设置为深色模式
  • [LeetCode] 面试题01.02 判定是否互为字符重拍
  • 代码随想录 -- 贪心 -- 跳跃游戏
  • MapReduce工作机制源码解析
  • Kafka服务端SASL/PLAIN+ACL认证授权安装操作
  • 关于Git Bash中如何定义alias
  • 【2024软考高级架构师】论文篇——3、论Web系统的测试技术及其应用
  • 深入了解React 工作原理是什么
  • Docker 容器 数据卷 使用