2025-01-02
注意:平行页面之间的通信可以在跳转时,通过url传参
的方式传递。
父组件wxml使用数据绑定
向子组件传递数据。
子组件使用properties
接收数据。
data: {
isChecked: false
}
<custom-checkbox checked="{{ isChecked }}" />
<checkbox class="custom-checkbox" checked bindtap="updateChecked" />
properties{
checked: {
type: Boolean,
value: false
}
}
注意,以上的办法有缺陷。因为需要updateChecked
会需要修改properties的值,但是properties的值一般不建议修改,会造成数据流混乱。
解决办法:在子组件内重新一个data叫做isChecked,通过observers
数据监听把传过来的值赋给子组件的data即可。参考视频
自定义组件内部使用triggerEvent
方法发射自定义事件,同时携带数据
自定义组件标签通过bind方法监听
发射的事件,同时绑定事件处理函数,在事件处理函数中通过事件对象获取传递的数据。
绑定事件函数
<button type="primary" plain bindtap="sendData">传递数据</button>
第二个参数是要传递的数据。
methods: {
sendData(){
this.triggerEvent('myevent', this.data.num)
}
}
<custom05 bind:myevent="getData" />
通过getData函数获取数据。
getData (event) {
// 可以通过事件对象.detail 获取子组件传递给父组件的数据
// console.log(event)
this.setData({
num: event.detail
})
}