发布时间:2025-12-09 12:05:06 浏览次数:2
需求,把A子组件的值传给父组件,在通过父组件传给子组件接收
A子组件
js: data
组件间的基本通信方式有以下几种。
this.selectComponent 方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。关于事件的基本概念和用法,参见 事件 。
监听自定义组件事件的方法与监听基础组件事件的方法完全一致:
代码示例:
<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 --><component-tag-name bindmyevent="onMyEvent" /><!-- 或者可以写成 --><component-tag-name bind:myevent="onMyEvent" />Page({ onMyEvent: function(e){ e.detail // 自定义组件触发事件时提供的detail对象 }})自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项:
代码示例:
在开发者工具中预览效果
<!-- 在自定义组件中 --><button bindtap="onTap">点击这个按钮将触发“myevent”事件</button>Component({ properties: {}, methods: { onTap: function(){ var myEventDetail = {} // detail对象,提供给事件监听函数 var myEventOption = {} // 触发事件的选项 this.triggerEvent('myevent', myEventDetail, myEventOption) } }})触发事件的选项包括:
选项名 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
bubbles | Boolean | 否 | false | 事件是否冒泡 |
composed | Boolean | 否 | false | 事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部 |
capturePhase | Boolean | 否 | false | 事件是否拥有捕获阶段 |
关于冒泡和捕获阶段的概念,请阅读 事件 章节中的相关说明。
代码示例:
在开发者工具中预览效果
// 页面 page.wxml<another-component bindcustomevent="pageEventListener1"> <my-component bindcustomevent="pageEventListener2"></my-component></another-component>// 组件 another-component.wxml<view bindcustomevent="anotherEventListener"> <slot /></view>// 组件 my-component.wxml<view bindcustomevent="myEventListener"> <slot /></view>// 组件 my-component.jsComponent({ methods: { onTap: function(){ this.triggerEvent('customevent', {}) // 只会触发 pageEventListener2 this.triggerEvent('customevent', {}, { bubbles: true }) // 会依次触发 pageEventListener2 、 pageEventListener1 this.triggerEvent('customevent', {}, { bubbles: true, composed: true }) // 会依次触发 pageEventListener2 、 anotherEventListener 、 pageEventListener1 } }})// 说人话
// 首先小程序在父组件中,通过引用子组件(或者说组件)之后,通过属性item,index;把组组件中的数据,
// 传值到子组件之后,子组件在properties中接收到值;
// 然后子组件通过自身的事件,比如catchtap="listtap"方法,激活自定义事件
// 接着子组件可以通过第二个参数,进行传值到父组件中,就把子组件中的index传给了父组件中
// 说人话
// 首先小程序在父组件中,通过引用子组件(或者说组件)之后,通过属性item,index;把组组件中的数据,
// 传值到子组件之后,子组件在properties中接收到值;
// 然后子组件通过自身的事件,比如catchtap="listtap"方法,激活自定义事件
// 接着子组件可以通过第二个参数,进行传值到父组件中,就把子组件中的index传给了父组件中
在任何时代,
教育说起来都是一件高大上的事,
但却没有什么真正有价值的东西是教得会的,
没有任何一种文化模因
可以说清楚一个个体的全部问题。
在任何时代,
想要抓住人性的弱点来赚钱都非常容易,
没有一点高级。
相反,想要建设一种文化,
耐心地拆除信息壁垒,
并且能够坚持下来,
那真不是一般的不易。
在任何时代,
在一秒钟内看到本质的人,
和花半辈子看不清的人,
自然是不一样的命运。