微信小程序——数据传递(子传父)

一、设置自定义事件,触发时传递数据

通过this.triggerEvent()设置。该方法两个参数,第一个为自定义的事件名字,第二个是数据,数据通过对象的格式传递
这里的对象用了简写的形式,展开为index:index
在这里插入图片描述

二、在父级引用的组件身上绑定自定义的事件

binditemChange=“handleItemChange”
bind自定义的事件名=“自定义一个处理函数”
在这里插入图片描述

三、在父级js文件中处理自定义事件,接收数据

在这里插入图片描述
在这里插入图片描述

### 微信小程序父组件向组件传递数据并监听数据变化 在微信小程序中,父组件可以通过属性绑定的方式向组件传递数据。为了实现父组件向组件传递数据的同时能够监听数据的变化,可以采用以下方法。 #### 数据传递与监听机制 父组件通过 `properties` 属性将数据传递组件中[^1]。当父组件中的数据发生变化时,组件会自动更新其对应的属性值。这种行为依赖于微信小程序内置的响应式机制[^2]。 以下是具体实现: --- #### 父组件代码示例 ```html <!-- Parent.wxml --> <view class="parent"> <view>这是父组件</view> <!-- 向组件传递名为 'message' 的数据 --> <child id="childComponent" message="{{parentMessage}}"></child> </view> ``` ```javascript // Parent.js Page({ data: { parentMessage: "来自父组件的消息" }, // 修改父组件的数据以测试组件是否能实时更新 changeParentMessage() { this.setData({ parentMessage: "父组件消息已更改" }); } }); ``` --- #### 组件代码示例 ##### 定义组件接受的属性 在组件的配置文件中声明它可以从父组件接收哪些属性,并设置默认值。 ```json { "component": true, "usingComponents": {} } ``` ```javascript // child.js Component({ properties: { message: { // 接收父组件传递过来的 'message' type: String, // 类型为字符串 value: "", // 默认值为空字符串 observer(newVal, oldVal) { // 当 'message' 发生变化时触发此函数 console.log("父组件传入的新值:", newVal); console.log("旧值:", oldVal); // 可在此处执行其他操作,比如更新内部状态或重新渲染界面 } } }, methods: { // 如果需要主动通知父组件某些事件发生,则可使用 triggerEvent 方法 notifyParent(data) { this.triggerEvent('customEvent', { detail: data }); } } }); ``` ##### 组件模板 展示接收到的数据。 ```html <!-- Child.wxml --> <view class="child"> <view>这是组件</view> <view>{{message}}</view> <!-- 动态显示从父组件获取的内容 --> </view> ``` --- #### 关键点解析 1. **父组件向组件传递数据**:通过 WXML 中的标签属性完成,例如 `<child message="{{parentMessage}}">` 表明将当前页面上的变量 `parentMessage` 赋予组件作为它的初始参数。 2. **监听数据变化**:利用组件内的 `observer` 函数来捕获由父级改变而引发的任何变动[^3]。每当指定 property 值被修改时都会调用该回调函数。 3. **双向通信扩展能力**:虽然本案例主要讨论单方向(即父亲 -> 孩)的信息流动过程;但是实际开发过程中往往还需要考虑反向反馈路径的设计——也就是让孩们也具备汇报自己状况的能力给长辈们知道。这通常借助自定义事件体系达成目标,正如前面提到过的那样,运用 `triggerEvent()` 实现这一目的[^2]。 --- ### 注意事项 - 确保所有涉及跨层交互的地方都遵循官方文档推荐的最佳实践模式; - 对外部输入做充分校验处理以免引入潜在安全隐患或者逻辑错误风险; - 尽量减少不必要的复杂度保持项目结构清晰易维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值