【微信小程序】父子组件之间的通信

文章介绍了在小程序中父子组件间通信的三种主要方式:1)属性绑定用于父向子传值;2)事件绑定让子组件能向父组件传递任意数据;3)通过selectComponent获取子组件实例以直接访问其数据和方法。

父子组件之间的3种通信

① 属性绑定

● 用于实现父向子传值,而且只能传递普通类型的数据,无法将方法传递给子组件。

② 事件绑定

● 用于子组件向父组件传递数据,可以传递任意数据。

③ 获取组件实例

● 父组件可以通过this.selectComponent()获取子组件实例对象, 这样就可以直接访问子组件的任意数据和方法。

属性绑定

父组件给子组件传值:

//父组件的data节点
data:{
    count:0
}
//父组件的wxml结构 test是子组件
<test count="{{count}}"></test> //把值传给子组件

子组件在properties节点中声明对应的属性并使用:

//子组件的properties节点
properties:{
    count:Number
}
//子组件的wxml结构
<text>子组件中:count值为:{{count}}</text>

事件绑定

① 在父组件的js中,定义一个函数,这个函数通过自定义事件的形式传递给子组件。

syncCount(){
    console.log('syncCount')
}

② 在父组件的xml中,通过自定义事件的形式,将步骤1中定义的函数引用,传递给子组件。

<test bind:sync="syncCount"></test>

③ 在子组件的js中,通过调用this.triggerEvent('自定义事件名称',{/*参数对象*/}),将数据发送到父组件。

//子组件的方法
 addCount(){
    this.triggerEvent('sync',{value:this.properties.count})
}

④ 在父组件的js中,通过e.detail获取到子组件传递过来的数据。

syncCount(e){
    //console.log('syncCount')
    this.setData({
        count:e.detail.value
    })
}

获取组件实例

可在父组件里调用this.selectComponent("id或class选择器"),获取子组件的实例对象,从而直接访问子组件的任意数据和方法。调用时需要传入一个选择器,例如this.selectComponent(".my-component")。

//父组件的wxml
<test count="{{count}}" class="customer"></test>

//父组件的方法
getChild(){
    const child = this.selectComponent('.customer')
    console.log(child)
    //使用获取到的子组件实例 操作子组件的数据
    child.setData({
        count:child.properties.count + 1
    })
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamRol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值