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

Vue2在子组件上使用v-model实现数据的双向绑定、.sync修饰符

1、v-model

先看示例:

//父组件<template><ChildComponent v-model="parentData" />
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentData: '' // 初始值}}
}
</script>

如上,在父组件中,使用v-model给子组件传递一个值,实现的数据的双向绑定。实际上呢,原理是在子组件上定义了一个自定义事件@input,并且给子组件传递了一个value值。

以上代码其实等同于:

<template><ChildComponent :value="parentData" @input="handleInput" />
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentData: '' // 初始值}},methods:{handleInput(val){this.parentData=val;}}
}
</script>

在子组件中,你要通过props接收父组件传过来的value的值,然后呢,当接收到的value的值发生改变的时候,通过$emit触发自定义事件‘input’,将新值传给父组件,以便父组件中改变相应的值。

如下:

export default {props: ['value'],methods: {updateValue(newVal) {this.$emit('input', newVal)}}
}

2、.sync修饰符

看示例:

<!-- 父组件 -->
<Child :title.sync="parentTitle" />

等价于

<Child :title="parentTitle" @update:title="parentTitle = $event" />

典型使用场景:

  1. 表单组件封装
    实现输入控件值与父组件数据的实时同步。
    <!-- 父组件 -->
    <CustomInput :value.sync="inputValue" /><!-- 子组件 CustomInput -->
    <input :value="value" @input="$emit('update:value', $event.target.value)">
    
  2. 多属性同步
    通过对象语法批量绑定多个 prop:
    <ChildComponent v-bind.sync="doc" />  <!-- 自动绑定 doc 对象的每个属性 -->
    

    示例:

v-model和.sync修饰符都是实现数据双向绑定的方案,他们诞生的目的都是为了简化代码的书写。

http://www.xdnf.cn/news/6499.html

相关文章:

  • 图深度学习、EMD和VMD详解
  • 受控组件和非受控组件的适用场景分别是什么?
  • AMGX里“One-ring“和“Two-ring“概念和解释
  • Ubuntu操作合集
  • 典型的**N+1查询问题**
  • 使用CMake中的configure_file命令自动生成项目版本信息
  • 【好用的工具】连服务器进入base指令
  • X-Ray,XRD,XRF,XPS有什么区别?
  • 【文件上传漏洞】
  • 面试从微前端拓展到iframe是如何通信的
  • 初始化一个Springboot项目
  • 基于正点原子探索者开发板的简易音乐播放器
  • doris节点数量规划
  • 设计并应用一个IIR-ButterWorth-Filter的例子
  • 前端工程化
  • MySQL如何查看某个表所占空间大小?(表空间大小查看方法)
  • C#自定义控件-实现了一个支持平移、缩放、双击重置的图像显示控件
  • AMC8 -- 2009年真题解析(中文解析)
  • RHCA笔记
  • 高效电脑隐私信息清理实用工具
  • AIStarter使用技巧|如何通过日志判断项目启动完成?倒计时设置与脚本优化方法详解
  • 计量——检验与代理变量
  • 低分辨率运行安卓模拟器:
  • 查看字节真实二进制形式示例解析2
  • 《探秘光纤通信:多模光纤和单模光纤的区别》
  • Logistics | 供应链物流术语
  • 【js】JavaScript的变量提升、函数声明提升
  • ANTsPy:医学影像处理python库
  • Python继承
  • Java 异常处理之 BufferOverflowException(BufferOverflowException 概述、常见发生场景、避免策略)