微信小程序:父子组件传值
在微信小程序里,父组件可以向子组件传值,子组件也可以向父组件传值,不过这两种传值方式不大相同,下面先简单介绍这两种传值的区别。
两者的区别
- 父组件向子组件传值,使用的是 属性绑定 的方法,并且只能传递普通类型的数据
- 子组件向父组件传值,使用的是 自定义事件 ,可以传递任意数据给父组件
准备工作
首先在小程序中创建一个 components 文件夹用来存放子组件,然后在 components 文件夹下新建一个要创建的子组件文件夹名称,我这里的文件夹名称为 child ,然后右键 child 文件夹,点击新建 Component ,输入名称最好和新建的文件夹名称一致,如下图所示:
创建好之后,将子组件 child 引入到父组件中,在父组件的 json 文件中的 usingComponents 节点下引入,如下所示:
"usingComponents": {"mycom": "../../components/child/child"
}
我们在父组件引入时,自定义了一个组件名为 mycom ,我们在父组件上渲染的时候,用 <mycom></mycom> 这组标签即可。还需要在子组件的 json 文件内设置 "component": true 。
{"component": true,"usingComponents": {}
}
父组件向子组件传值
parent.wxml:
<view class="container"><view>我是父组件</view><view>====================================</view><mycom name="{{ name }}" age="{{ age }}"></mycom>
</view>
在父组件的页面内引入子组件即 <mycom></mycom> 标签,使用属性绑定的方式把父组件的值绑定。
parent.js:
data: {name: 'Ikun',age: 24
},
在父组件的 js 文件 data 中定义数据。
child.wxml:
<view><view>我是子组件,下面是父组件传过来的数据</view><view>name: {{ name }}</view><view>age:{{ age }}</view>
</view>
child.js:
Component({properties: {name: {type: 'String',value: '小明'},age: Number}
})
在子组件的 js 文件的 properties 对象中接收父组件传过来的值。
最终效果如下:
总结:
父组件向子组件传值以属性的形式,子组件以 properties 接收,并可指定数据类型 type 以及默认值 value 。
子组件在 wxml 里可以直接以 {{ 属性名 }} 的形式使用,而在 js 中想要获得父组件传过来的数据的话,可以通过 observers 监听 properties 的属性值来获取。
observers:{'name': function(val){console.log(val)}
}
子组件向父组件传值
child.js:
methods: {newName() {this.triggerEvent('newName', {name: '李四'})}
}
子组件向父组件传递数据使用 this.triggerEvent() 方法,newName 是传递给父组件的自定义事件名称。
这个方法可以接收三个参数:
this.triggerEvent(
'myevent
', myEventDetail, myEventOption);
myevent
为自定义的方法名;myEventDetail
是传到组件外的数据;myEventOption
为是否冒泡的选项,可设置三个参数:bubbles
:默认false
事件是否冒泡;composed
:默认false
事件是否可以穿越组件边界;capturePhase
:默认false
事件是否拥有捕获阶段
parent.wxml:
<mycom name="{{ name }}" age="{{ age }}" bindnewName="newName"></mycom>
parent.js:
newName(event) {console.log(event.detail)
}
效果如图所示:
总结
在父组件监听事件 bindnewName="newName" 等价于 bind:newName="newName",与 bind 所绑定的 newName 为子组件自定义的事件名,右侧的 newName 为父组件的方法。 newName 方法的 事件对象 event ,子组件传递过来的值可以从 event.detail 里拿到。
微信小程序:父子组件传值相关推荐
- 微信小程序父子组件传值问题
微信小程序父子组件传值问题 把自己碰到的问题或者学到的东西在这里总结,慢慢积累 在父子组件传值时,我发现子组件竟然拿不到父组件传过来的值. 我指的拿不到父组件的值,是指在子组件的生命周期created ...
- 可以实现微信小程序父子组件实时通信的插件
小程序在组件化开发的时候可能没有达到vue那样的便捷,例如跨组件状态同步等. 这个插件可以: 1.通过代理的方式,为小程序添加了跨组件实时通信:父子组件实时同步状态功能: 2.与vue相似的Watch ...
- 微信小程序父子组件相互通信
父组件传值给子组件 在父组件中引用子组件 {"component": true,"usingComponents": {"alert-tip" ...
- 微信小程序父子组件通信
父子组件之间有3种通信方式 1.属性绑定 用于父组件向子组件的指定属性设置数据,只能传递普通类型的数据,无法将方法传递给子组件 2.事件绑定 用于子组件向父组件传递数据,可以传递任意数据①在父组件的j ...
- 微信小程序父子组件方法调用方法汇总
父组件向子组件传值 父组件通过属性传值 <childEle childParams="{{params}}"></childEle> 子组件通过proper ...
- 微信小程序 父子组件通讯/传值
3种方式: 属性绑定:父组件 向 --> 子组件的指定属性设置数据.仅能设置json兼容的数据,如:基本数据类型.object等 (不能传递复杂属性的数据,如:方法等). 事件绑定:子组件 向 ...
- 微信小程序父子组件通信详解
1 父组件向子组件传递数据: 1.1 在父组件的文件夹中的.json文件下引入子组件 {"usingComponents": {//"Tab" 是自己定义的组件 ...
- 小程序子组件向父组件传值_一套组件化、可复用、易扩展的微信小程序 UI 组件库...
如何使用 Wux Weapp 是一套组件化.可复用.易扩展的微信小程序 UI 组件库.在开始使用之前,需要先阅读微信小程序自定义组件的相关文档. 通过 npm 安装,需要依赖小程序基础库 2.2.1 ...
- 微信小程序自定义组件(二)
微信小程序自定义组件 ps 由于作业部落貌似出了点问题,耽误了点时间,找了一个stackedit.io准备写.无奈,这是要自己建编辑器的节奏啊.没有一个能靠的注 为何存在组件 组件间的关系 使用rel ...
- 微信小程序 MinUI 组件库系列之 label 标签组件
MinUI 是基于微信小程序自定义组件特性开发而成的一套简洁.易用.高效的组件库,适用场景广,覆盖小程序原生框架.各种小程序组件主流框架等,并且提供了高效的命令行工具.MinUI 组件库包含了很多基础 ...
最新文章
- 路由网关--spring cloud zuul
- 强制杀oracle进程
- 【大数据-Hadoop】Hadoop架构
- mysql高效索引之覆盖索引
- [图形学]切向空间(Tangent Space)
- 实例化vue对象 绑定子组件_Vue-双向数据绑定
- 斩获2019 Thales AIChallenge4Health第一,腾讯优图医疗AI再获突破
- 【java】用javaSE来实现对mysql数据库的增删改查
- 华为笔试题--最长公共子串
- eZ Publish 的文章
- android hook底层代码_Java-Hook技术-入门实践(反射、动态代理)-Hook拦截通知(当前App/Context)...
- Dalvik 与 ART 区别
- bootstrap设计登录页面_微服务和VUE(2) 搭建前端登录界面
- python怎么读单词和古文_Python 实现文言文词频统计
- 第九届蓝桥杯JavaA组省赛真题
- 菜鸟学R语言(组间多重比较)
- 【BZOJ2434】【NOI2011】阿狸的打字机(AC自动机及Fail树的性质,树状数组)
- in unnamed module of loader ‘app‘
- HDU- 1151 Air Raid(最小路径覆盖)
- 王者服务器修改,王者荣耀