组件间通信与事件
组件间的基本通信方式有以下几种。
WXML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据(自基础库版本 2.0.9 开始,还可以在数据中包含函数)。
事件:用于子组件向父组件传递数据,可以传递任意数据。
如果以上两种方式不足以满足需要,父组件还可以通过 this.selectComponent 方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。
WXML 数据绑定
监听事件
事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。关于事件的基本概念和用法。
自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项:
代码示例:
<!-- 组件 index.wxml -->
<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 -->
<custom-component bindmyevent="onMyEvent" />
<!-- 或者可以写成 -->
<custom-component bind:myevent="onMyEvent" />
<!-- 组件 custom-component.wxml -->
<button bindtap="onTap">点击这个按钮将触发一系列事件</button>
<!-- 组件 custom-component.js -->
Component({
methods: {
onTap: function () {
this.triggerEvent('myevent', {item:4}) // 只会触发
}
}
})
<!-- 组件 index.js -->
Page({
onMyEvent: function(e){
e.detail // 自定义组件触发事件时提供的detail对象 {item:4}
}
})
this.selectComponent
获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。