组件间的基本通信方式有以下几种:
创新互联是一家集做网站、成都网站建设、网站页面设计、网站优化SEO优化为一体的专业网络公司,已为成都等多地近百家企业提供网站建设服务。追求良好的浏览体验,以探求精品塑造与理念升华,设计最适合用户的网站页面。 合作只是第一步,服务才是根本,我们始终坚持讲诚信,负责任的原则,为您进行细心、贴心、认真的服务,与众多客户在蓬勃发展的市场环境中,互促共生。
解释:
事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。
监听自定义组件事件的方法与监听基础组件事件的方法完全一致。
代码示例
通过 dispatch 方法,子组件可以向组件树的上层派发消息。消息将沿着组件树向上传递,直到遇到第一个处理该消息的组件,则停止。
通过 messages 可以声明组件要处理的消息,messages 是一个对象,key 是消息名称,value 是消息处理的函数,接收一个包含 target(派发消息的组件)和 value(消息的值)的参数对象。
代码示例
在开发者工具中打开
在开发者工具中打开
在 WEB IDE 中打开
/* 父组件逻辑 */
Component({
messages: {
'childmessage': function (e) {
console.log('childmessage', e);
}
}
});
/* 子组件逻辑 */
Component({
created() {
this.dispatch('childmessage', {
name: 'swan'
});
}
});
解释:自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名和 detail 对象:
代码示例
在开发者工具中打开
在开发者工具中打开
在 WEB IDE 中打开
/* 组件child页面 */
/* 组件child逻辑 */
Component({
properties: {},
methods: {
onTap: function() {
// detail对象,提供给事件监听函数
var myEventDetail = {}
// 触发事件的选项
var myEventOption = {bubbles:true}
this.triggerEvent('myevent', myEventDetail, myEventOption);
}
}
});
/* 使用该组件的页面 */
/* 使用该组件的逻辑 */
Page({
listener: function (e) {
console.log(e);
}
})
触发事件的选项包括:
选项名 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
bubbles | Boolean | 否 | false | 事件是否冒泡 |
capturePhase | Bollean | 否 | false | 事件是否拥有捕获阶段 |
关于自定义组件的冒泡和捕获阶段。
代码示例
// 组件 child.js
Component({
methods: {
onTap: function() {
// 只会触发 pageEventListener2
this.triggerEvent('customevent', {})
// this.triggerEvent('customevent', {}, { bubbles: true }) // 会依次触发 pageEventListener2 、 pageEventListener1
// this.triggerEvent('customevent', {}, { bubbles: true, capturePhase: true }) // 会依次触发 pageEventListener2 、 anotherEventListener 、 pageEventListener1
}
}
})
代码示例
这是组件child
这是使用child
// 使用该组件的逻辑
Page({
onLoad: function () {
const res = this.selectComponent('#page-id');
console.log(res);
}
});
注意:
网页标题:创新互联百度小程序教程:组件间通信与事件
URL链接:http://www.shufengxianlan.com/qtweb/news17/214567.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联