在微信小程序里,父组件可以向子组件传值,子组件也可以向父组件传值,不过这两种传值方式不大相同,下面先简单介绍这两种传值的区别。

两者的区别

  • 父组件向子组件传值,使用的是 属性绑定 的方法,并且只能传递普通类型的数据
  • 子组件向父组件传值,使用的是 自定义事件 ,可以传递任意数据给父组件

准备工作

首先在小程序中创建一个 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 里拿到。

微信小程序:父子组件传值相关推荐

  1. 微信小程序父子组件传值问题

    微信小程序父子组件传值问题 把自己碰到的问题或者学到的东西在这里总结,慢慢积累 在父子组件传值时,我发现子组件竟然拿不到父组件传过来的值. 我指的拿不到父组件的值,是指在子组件的生命周期created ...

  2. 可以实现微信小程序父子组件实时通信的插件

    小程序在组件化开发的时候可能没有达到vue那样的便捷,例如跨组件状态同步等. 这个插件可以: 1.通过代理的方式,为小程序添加了跨组件实时通信:父子组件实时同步状态功能: 2.与vue相似的Watch ...

  3. 微信小程序父子组件相互通信

    父组件传值给子组件 在父组件中引用子组件 {"component": true,"usingComponents": {"alert-tip" ...

  4. 微信小程序父子组件通信

    父子组件之间有3种通信方式 1.属性绑定 用于父组件向子组件的指定属性设置数据,只能传递普通类型的数据,无法将方法传递给子组件 2.事件绑定 用于子组件向父组件传递数据,可以传递任意数据①在父组件的j ...

  5. 微信小程序父子组件方法调用方法汇总

    父组件向子组件传值 父组件通过属性传值 <childEle childParams="{{params}}"></childEle> 子组件通过proper ...

  6. 微信小程序 父子组件通讯/传值

    3种方式: 属性绑定:父组件 向 --> 子组件的指定属性设置数据.仅能设置json兼容的数据,如:基本数据类型.object等 (不能传递复杂属性的数据,如:方法等). 事件绑定:子组件 向 ...

  7. 微信小程序父子组件通信详解

    1 父组件向子组件传递数据: 1.1 在父组件的文件夹中的.json文件下引入子组件 {"usingComponents": {//"Tab" 是自己定义的组件 ...

  8. 小程序子组件向父组件传值_一套组件化、可复用、易扩展的微信小程序 UI 组件库...

    如何使用 Wux Weapp 是一套组件化.可复用.易扩展的微信小程序 UI 组件库.在开始使用之前,需要先阅读微信小程序自定义组件的相关文档. 通过 npm 安装,需要依赖小程序基础库 2.2.1 ...

  9. 微信小程序自定义组件(二)

    微信小程序自定义组件 ps 由于作业部落貌似出了点问题,耽误了点时间,找了一个stackedit.io准备写.无奈,这是要自己建编辑器的节奏啊.没有一个能靠的注 为何存在组件 组件间的关系 使用rel ...

  10. 微信小程序 MinUI 组件库系列之 label 标签组件

    MinUI 是基于微信小程序自定义组件特性开发而成的一套简洁.易用.高效的组件库,适用场景广,覆盖小程序原生框架.各种小程序组件主流框架等,并且提供了高效的命令行工具.MinUI 组件库包含了很多基础 ...

最新文章

  1. 路由网关--spring cloud zuul
  2. 强制杀oracle进程
  3. 【大数据-Hadoop】Hadoop架构
  4. mysql高效索引之覆盖索引
  5. [图形学]切向空间(Tangent Space)
  6. 实例化vue对象 绑定子组件_Vue-双向数据绑定
  7. 斩获2019 Thales AIChallenge4Health第一,腾讯优图医疗AI再获突破
  8. 【java】用javaSE来实现对mysql数据库的增删改查
  9. 华为笔试题--最长公共子串
  10. eZ Publish 的文章
  11. android hook底层代码_Java-Hook技术-入门实践(反射、动态代理)-Hook拦截通知(当前App/Context)...
  12. Dalvik 与 ART 区别
  13. bootstrap设计登录页面_微服务和VUE(2) 搭建前端登录界面
  14. python怎么读单词和古文_Python 实现文言文词频统计
  15. 第九届蓝桥杯JavaA组省赛真题
  16. 菜鸟学R语言(组间多重比较)
  17. 【BZOJ2434】【NOI2011】阿狸的打字机(AC自动机及Fail树的性质,树状数组)
  18. in unnamed module of loader ‘app‘
  19. HDU- 1151 Air Raid(最小路径覆盖)
  20. 王者服务器修改,王者荣耀

热门文章

  1. 有一种爱是不能被猜疑的
  2. BUUCTF Crypto [异性相吸] writeup题解
  3. spring实现属性值的注入
  4. 知识付费如何再次起飞?
  5. 使用 Slurm Federation 调度实现HPC混合云 Cloudburst
  6. docker配置仓库源
  7. xorg-xserver相关完全解析
  8. uni-app app分享到朋友和朋友圈
  9. 基于大数据的农产品价格信息监测分析系统
  10. 2021年G1工业锅炉司炉新版试题及G1工业锅炉司炉模拟考试题