小程序父子组件传值

1.父传子

父组件组件传递子组件通过属性传值,例如tranBool="{{Bool}}"的形式将变量Bool传递给子组件,如果不传变量的话可以不用加花括号。

父组件
//wxml
<view>
    <childComponent 
            tranBool="{{Bool}}" 
            tranString="hello world"/>
</view>
//js
Page({
    data: {
        Bool:false
    }
})
子组件

子组件获取properties里的值可以在组件生命周期的attached或者 ready通过this.data.来访问。

//wxml
<view>
    <view>{{tranBool}}</view>
    <view>{{tranString}}</view>
</view>
//js
Component({
    properties: {
        tranBool: {
            type: Boolean,
            value: true
        },
        tranString: {
            type: String,
            value: ''
        }
        //tranBool: Boolean, // 简化的定义方式
        //tranString: Boolean // 简化的定义方式
    },
    lifetimes: {
        attached() {
            // 在组件实例进入页面节点树时执行
            console.log(this.data.tranBool)
            console.log(this.data.tranString)
        },
        ready() {
            // 在组件在视图层布局完成后执行
            console.log(this.data.tranBool)
            console.log(this.data.tranString)
        }
    }
})

2.子传父(triggerEvent)

triggerEvent方法可以把组件内部的数据传到外面,触发组件外的事件。它接收3个参数:

this.triggerEvent('myevent', myEventDetail, myEventOption)。

myEventDetailmyEventOption都是对象,myEventDetail是传到组件外的数据,myEventOption有三个参数可以设置:

  • bubbles 默认false 事件是否冒泡
  • composed 默认false 事件是否可以穿越组件边界
  • capturePhase 默认false 事件是否拥有捕获阶段
子组件
//wxml
<view>
    <view bindtap="changeStatus">点击我传递父组件</view>
</view>
//js
Component({
    properties: {
        tranBool: {
            type: Boolean,
            value: true
        }
    },
    methods:{
        changeStatus(){
            this.triggerEvent('myevent', this.data.tranBool)
        }
    }
})
父组件
//wxml
<view>
    <childComponent 
        tranBool="{{Bool}}" 
        bind:myevent="changeStatus" />
</view>
//js
Page({
    data: {
        Bool: false
    },
    changeStatus(val) {
        this.setData({
            Bool: !val.detail
        })
    }
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值