小程序父子组件间传值(微信/支付宝/钉钉)
以传递一个简单的count值为例,实现父子组件的双向绑定,无论是点击父组件按钮还是子组件按钮,count值都自增
微信小程序
父传子
<component count="{{count}}"/>
properties:{count:Number
}
简单的将父组件在data中定义的属性,赋给子组件定义在properties中的属性即可
通过在父组件中设置一个按钮,使count自增,子组件的count属性也会随之自增
达到点击父组件按钮,父组件子组件count值一同加一的效果
子传父
原理是将父组件的函数传递给子组件,子组件的事件可以触发父组件函数,进而传参
<component count="{{count}}" bind:myevent="syncCount"/>
意即在父组件中定义了"syncCount"方法,子组件可以通过"myevent"作为关键字,访问到这个方法
<button bindtap="btn_click"/>
methods:{btn_click:function(){var myEventDetail = {} // detail对象,提供给事件监听函数var myEventOption = {} // 触发事件的选项this.triggerEvent('myevent', myEventDetail, myEventOption)
}
}
在子组件中放置一个按钮,在它的点击事件中,可以使用triggerEvent方法触发父组件函数,并通过myEventDetail参数来传递需要的信息,本例中,我们可以什么都不传,只需要通知父组件让count值自增即可,因为第一步已经实现了父传子,所以父组件收到消息,调用函数,count自增,子组件的count值就会同步变化
达到点击子组件按钮,父组件子组件count值一同加一的效果
syncCount:function(e){this.setData({count:this.data.count+1})}
支付宝小程序
父传子
<component count="{{count}}"/>
props:{count:Number
}
简单的将父组件在data中定义的属性,赋给子组件定义在props中的属性即可
通过在父组件中设置一个按钮,使count自增,子组件的count属性也会随之自增
达到点击父组件按钮,父组件子组件count值一同加一的效果
子传父
原理是将父组件的函数传递给子组件,子组件的事件函数可以直接调用父组件函数,进而传参
<component count="{{count}}" onChange="countAdd"/>
意即在父组件中定义了"countAdd"方法,传递给了子组件props中的onChange,注意这里的命名必须使用on开头,不然会被识别为字符串
props: {count:Number,onChange:(data)=>console.log(data)},
如此定义是为了,如果父组件不传onChange,onChange有个默认的方法
<button onTap="btn_click" /button>
methods: {btn_click:function(){this.props.onChange();}}
在子组件中放置一个按钮,在它的点击事件中调用父组件的countAdd方法(与onChange绑定了),这里我们可以不传参,在父组件中使count值自增,因为之前已经实现了父传子,子组件的count值就也会随之自增(如果需要传参,给countAdd方法加形参即可)
达到点击子组件按钮,父组件子组件count值一同加一的效果
countAdd(){this.setData({count:this.data.count+1})}
微信和支付宝小程序在data和props方面的区别
微信小程序的data和properties是同一个对象,也就是说
我们既可以通过父组件的值变化来操作properties中的属性,也可以通过子组件的setData方法更改properties中的属性
而支付宝小程序的data和props是两个不同的对象,props只能由父组件来更改,无法在子组件中进行操作
因此,在微信小程序中实现count值的双向绑定,在实现子传父时,也可以这么写
methods:{btn_click:function(){this.setData({count:this.properties.count+1});this.triggerEvent("myevent",{value:this.properties.count});
}
}
我们先让子组件的count值加一,再将这个值回传给父组件,直接赋值给父组件的count
之前的方法是子组件通知父组件,父组件更改值,子组件随之改变
这种方式是子组件先更改自己,再直接将父组件的值更改
syncCount:function(e){this.setData({count:e.detail.value})}
在写支付宝小程序时是无法使用这种方式的,因为子组件不允许修改props中的属性
比较推荐的做法也是不要让直接让子组件修改properties中的属性,交给父组件来做更好,这里只是记录一下
小程序父子组件间传值(微信/支付宝/钉钉)相关推荐
- 微信小程序 父子组件通讯/传值
3种方式: 属性绑定:父组件 向 --> 子组件的指定属性设置数据.仅能设置json兼容的数据,如:基本数据类型.object等 (不能传递复杂属性的数据,如:方法等). 事件绑定:子组件 向 ...
- 微信小程序父子组件传值问题
微信小程序父子组件传值问题 把自己碰到的问题或者学到的东西在这里总结,慢慢积累 在父子组件传值时,我发现子组件竟然拿不到父组件传过来的值. 我指的拿不到父组件的值,是指在子组件的生命周期created ...
- 组件间数据交互——父组件向子组件传值( props属性值类型) 子组件向父组件传值-携带参数 || 非父子组件间传值
父组件向子组件传值 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...
- 可以实现微信小程序父子组件实时通信的插件
小程序在组件化开发的时候可能没有达到vue那样的便捷,例如跨组件状态同步等. 这个插件可以: 1.通过代理的方式,为小程序添加了跨组件实时通信:父子组件实时同步状态功能: 2.与vue相似的Watch ...
- 微信小程序父子组件相互通信
父组件传值给子组件 在父组件中引用子组件 {"component": true,"usingComponents": {"alert-tip" ...
- 微信小程序父子组件通信
父子组件之间有3种通信方式 1.属性绑定 用于父组件向子组件的指定属性设置数据,只能传递普通类型的数据,无法将方法传递给子组件 2.事件绑定 用于子组件向父组件传递数据,可以传递任意数据①在父组件的j ...
- 【微信小程序】组件间通信与事件-获取子组件的实例对象
1.0 前言 1.1 为何写这篇笔记 小程序官方文档只粗略给了一段代码,让笔者找不到北,故记录下易于理解的过程,以便新手了解和使用 1.2 获取子组件实例对象的作用 当引用了组件,且父组件使用了监听函 ...
- [淘宝小程序] 父子组件方法传递
子向父传递方法 1.在父组件(本文中用的是一个页面)中引入子组件"myComponent" 在[pageName].json中输入 {"usingComponents&q ...
- 父子组件间传值,父传子,子传父
父子组件给子组件传值 第一步:爸爸将数据递给儿子,所以我们就需要在子组件绑定父组件的数据 第二步:爸爸都已经将数据给你了,那么你就要礼貌性的伸手去拿,这时我们可以利用props去接爸爸传过来的值 第三 ...
- 微信小程序父子通讯、传值 triggerEvent
一.父组件给子组件传值 分三步 1父组件定义变量: 2父组件传递变量: 3子组件接收变量: 一.定义.传递变量 Page({data: {tabsList:[{ id:1, name:'一一', is ...
最新文章
- linux 恢复boot分区,Linux boot分区格式化后恢复 示例
- eclipse配置PHP自动提示代码
- java自定义线程_Java自定义线程池详解
- 实现灵活的IT架构的三个要点
- C++ STL容器vector篇(四) vector容器交换, 预留空间
- Unity3D 使用 GL 绘制线条
- ueditor如何去掉末尾的p标签_织梦dedecms如何去掉域名后面的index.html
- 菜鸟教程php上传图片,PHP 文件上传
- php web服务器部署,php – 如何配置apache web服务器以部署laravel 5
- 到底绿茶能不能减肥瘦小肚子? - 生活至上,美容至尚!
- 阿里云云计算 5 阿里云的基础架构
- 《深入浅出通信原理》连载1-562合集
- ChIP-seq 数据分析1 ChIP-Seq技术2 ChIP-Seq数据分析
- bootstrap 表单样式
- KinectV2 qt opencv 实现平面测量
- python的注释符号有哪些_python注释符号
- 移动端点击a标签后默认蓝色背景如何去除
- html 图片自动滚动播放,CSS3实现图片滚动播放效果
- es 聚合查询 java api_javaAPI操作ES分组聚合
- 单总线(1-Wire BUS)通讯协议
热门文章
- python3视频教程哪个好_2020年5个经典python编程入门视频教程推荐学习
- 别让PPT把你绑架了
- linux命令不断更新
- java操作seaweedfs
- 随机森林随机回归预测_随机森林回归预测电子商务销售额
- ①编写一个程序,实现文件的复制。②写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。③ 编写一个应用程序,向数据文件out.dat中输入100个1000以内的随机整
- 人脸对齐(一)--定义及作用
- cad汉仪长仿宋体_cad长仿宋体下载
- 微信小程序保存图片到相册
- 三菱PLC5u与台达变频器modbus RTU通讯