组件间的双向绑定、如何自己定制双向绑定
1.组件间的双向绑定
1.1 组件的双向绑定的介绍
由于vue中的单项数据流,一般来说,父组件通过自定义属性传输数据,子组件通过props字段接受数据,如果子组件想要更改父组件传过来的数据,可以通过this.emit()自定义事件,然后在子组件上绑定自定义事件,然后父组件通过自定义事件的函数中的参数拿到数据;
但是如果能将适用于input标签的v-model使用在子组件上,也就是将组件看作为一个input框,是不是就能如input一般实现数据的双向绑定呢?
双向绑定:v-model是绑定value属性和绑定input事件双向指令的语法,v-model其实就是通过绑定input事件,绑定value属性,在input事件里面把变化之后的值重新赋值给双向绑定的字段;
1.2 组件的双向绑定的适用步骤
1. 在子组件的标签上使用v-model绑定父组件要传输的数据;
2. 子组件在props使用value(默认)接受v-model绑定的数据;
3. 子组件在事件触发函数中使用this.emit()自定义事件,第二个参数直接传输更改后数据;
4. 在子标签对中添加自定义事件及事件执行函数,在函数中更改数据的值;
1.3 代码演示
<div id="app"><!-- 双向绑定:v-model是绑定value属性和绑定input事件双向指令的语法,v-model其实就是通过绑定input事件,绑定value属性,在input事件里面把变化之后的值重新赋值给双向绑定的字段--><p>{{num1}}</p><input type="text" v-model="num1"><input type="text" :value="num1" @input="num1=arguments[0].target.value"><hr><!-- 组件双向绑定:让组件支持v-model指令,需要子组件接受value属性,并且在子组件添加事件发射,发射input事件 --><!-- <com type="text" :value="num1" @input="fun"> --><com type="text" :value="num1" @haa="num1=arguments[0]"><!-- <com v-model="num1"></com> -->
</div>
Vue.component('com', {template: `<div>{{value}}<button @click='add'>点击计算</button></div>`,props: ['value'],methods: {add() {this.$emit('haa', this.value + 1)},},
})new Vue({el: '#app',data: {num1: 10}, methods: {fun(v) {console.log(arguments);this.num1 = v;}},
})
2.定制双向绑定
2.1 定制双向绑定
在子组件中的model中添加prop属性和event属性;prop属性值使自定义属性;event属性值使自定义事件;
2.2 代码演示
<div id="app"><com v-model="count"></com><com :my-value="count" @myinput="count=arguments[0]"></com>{{count}}
</div>
Vue.component('com',{template:`<div><button @click='f1'>修改{{myValue}}</button></div>`,props:["myValue"],model:{// 可以在父子组件进行双向绑定的时候,自定义v-model的属性和事件名prop:"myValue", // 默认值是valueevent:"myInput", //默认的是input},methods: { f1(){this.$emit('myinput',100)}},})new Vue({el:'#app',data:{count:12},methods:{},
})
组件间的双向绑定、如何自己定制双向绑定相关推荐
- 巧用v-model实现组件间数据双向绑定
在vue的开发中,我们常常会构造自定义组件,多个自定义组件组合至父级组件中,父子组件的通信方式基本是:父组件通过Prop向子组件传递数据. <!-- 父组件 --> <templat ...
- Vue之组件间的双向绑定
何为组件间双向绑定 我们都知道当父组件改变了某个值后,如果这个值传给了子组件,那么子组件也会自动跟着改变,但是这是单向的,使用v-bind的方式,即子组件可以使用父组件的值,但是不能改变这个值.组件间 ...
- 【Vue2 组件间数据的双向绑定】
组件间数据的双向绑定 一.通过自定义事件 二.通过v-model 三.通过.sync修饰符 四.provide和inject 代码中的p-8,mt-8等,都是自己写的工具类,复制代码的同学,可以自行删 ...
- 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...
- 【Vue.js】vue2组件间通信方式总结
目录 一.props传参 1.父组件 ==> 子组件 2.子组件 ==> 父组件 二.组件的自定义事件 三.全局事件总线 四.消息订阅和发布 五.vuex 六.插槽 1.默认插槽 2.具名 ...
- Vue中组件间通信的方式
Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.跨级组件.非嵌套组件之间通信. props $emit props $emit适用于父子组件的通信,这种组件通信的方式是我们运用的非 ...
- Vue第二天学习总结—— Vue全家桶之组件化开发(组件化开发思想、组件注册、Vue调试工具用法、组件间数据交互传递、组件插槽、基于组件的案例——购物车)
(一) 组件化开发思想 1. 现实中的组件化思想体现 组件化即是对某些可以进行复用的功能进行封装的标准化工作 标准:要想组件能够成功组合在一起,每个组件必须要有标准 分治:将不同的功能封装到不同的组件 ...
- 小程序第三讲 组件间传值 props
小程序第三讲 组件间传值 props 写在前面的话 props 传值 上面提到的props方法跟vue同样适用 结束语 项目地址 写在前面的话 上一篇我们讲到了项目的上手,这一讲我们围绕着wepy(v ...
- vue组件间通信的13种方式
前言 vue是数据驱动视图更新的框架, 我们平时开发,都会把页面不同模块拆分成一个一个vue组件, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们需要知道在v ...
最新文章
- 对象存储、块存储、文件存储的区别
- .net core ocelot 获取路由的mothed_Net Core微服务入门全纪录(四)Ocelot网关(上)
- 用触发器实现SQLite的外键约束
- java后台实现自定义排序,java 两种方式实现自定义排序
- 软链接文件和硬链接文件
- vue elementui表格数据
- Reflect Refract (以水渲染为例)
- PLSQL Developer 没有64位版本 + 找不到 msvcr71.dll
- java syn包_TCP攻击之SYN攻击
- element的上传如何获取路径_element中文件上传
- 考研英语 - word-list-49
- 手机如何制作gif?简单三步在线合成gif动图
- 制作可独立分发的Android模拟器
- linux iptables源ip替换,Linux更改源IP地址的传入流量
- c++如何保留两位小数
- 2022T电梯修理考试题库及答案
- sdl+ffmpeg视频播放器02
- 程序员35岁职业危机
- 达内科技NTD1712 cisco远程控制路由,交换。
- 一款红队快速指纹识别工具
热门文章
- python练习题百度云_Python专项基础练习(字符串)练习题
- 【洛谷题解】P2356 弹珠游戏
- 1.Python-准备工作:搭建环境与“Hello,world!”
- python图像处理opencv笔记(二):视频基本操作
- 【Javascript】求两个对象的交集、差集
- 重点人口动态管控轨迹分析系统开发,可视化大数据平台建设
- Flink新特性之非对齐检查点(unaligned checkpoint)简介
- git小文件时报错Remote origin does not support the LFS
- 华医通显示连接服务器失败,华医通app怎么用 华医通app使用教程
- 轻松解决2013 lost connection to mysql server at ‘reading initial communication packet‘, system error: 0“