微信小程序子组件向父组件传递数据

来源:通义千文2.5

步骤 1: 定义父组件中的方法

首先,在父组件中定义一个方法(如 handleClick),并准备一个用于接收子组件传来的数据的方法。

父组件(Parent.wxml)
html
<!-- parent.wxml -->
<view class="parent">
  <view>这是父组件</view>
  <child id="childComponent" bind:customEvent="handleClickFromChild"></child>
</view>
父组件逻辑文件(Parent.js)
// parent.js
Page({
  data: {
    message: ''
  },
  handleClickFromChild: function (e) {
    console.log('接收到子组件的数据:', e.detail);
    this.setData({
      message: e.detail.message
    });
  }
});

步骤 2: 在子组件中触发事件

接下来,在子组件中触发一个自定义事件,将数据传递给父组件。

子组件模板文件(Child.wxml)
<!-- child.wxml -->
<view class="child">
  <button bindtap="sendDataToParent">发送数据给父组件</button>
</view>
子组件逻辑文件(Child.js)
// child.js
Component({
  methods: {
    sendDataToParent: function () {
      var data = { message: '你好,我是子组件!' };
      this.triggerEvent('customEvent', data);
    }
  }
});

 详解this.triggerEvent('customEvent', data)

  1. this 关键字:

    • 在子组件的方法内部,this 指向当前组件实例。这意味着你可以使用 this 来访问组件的状态、属性和方法等。
  2. triggerEvent 方法:

    • triggerEvent 是微信小程序提供的一个API,用于在组件内部触发一个自定义事件。它接受两个参数:
      • 第一个参数是一个字符串,表示事件的名称;
      • 第二个参数是事件携带的数据。
  3. 事件名称:

    • 在本例中,事件名称为 'customEvent'。你需要确保这个事件名称与你在父组件中绑定的事件名称一致,这样父组件才能正确地接收到事件。
  4. 传递的数据:

    • 事件可以携带数据。在这个例子中,data 变量包含了一个对象 { message: '你好,我是子组件!' }。这个对象将作为事件的一部分被传递到父组件。
  5. 调用 triggerEvent 方法:

    • 当 sendDataToParent 方法被调用时(例如,当用户点击子组件中的按钮时),triggerEvent 方法就会被调用,触发一个名为 'customEvent' 的事件,并将数据对象 { message: '你好,我是子组件!' } 作为参数传递。
### 微信小程序子组件调用父组件传递的函数 在微信小程序开发过程中,为了使子组件能够调用父组件传递过来的函数,可以采用特定的方式来进行设置。当创建父子组件关系时,在父组件子组件传递数据的同时也可以传递方法。 #### 定义父组件并绑定事件处理器 父组件通过属性的形式将自身的某个方法作为参数传递给子组件。这可以通过`wxml`文件中的自定义属性完成,并且该属性名需遵循驼峰命名法或连字符分隔的小写字母形式[^2]。 ```html <!-- 父组件 WXML --> <child-component bindCustomEvent="handleCustomEvent"></child-component> ``` ```javascript // 父组件 JS Page({ handleCustomEvent: function(e){ console.log('收到子组件触发的消息:', e.detail); } }) ``` #### 接收来自父组件方法并在子组件中使用 子组件接收这个被当作属性值传入的方法,并将其存储起来以便后续调用。这里需要注意的是,如果希望子组件能主动调用方法,则应该利用`this.triggerEvent()`来触发表单提交或其他类型的事件,从而间接执行父组件提供的逻辑[^4]。 ```html <!-- 子组件 WXML --> <button type="primary" bindtap="onButtonClick">点击我</button> ``` ```javascript // 子组件 JS Component({ properties: { customMethod: Function // 声明接受一个函数类型的属性 }, methods:{ onButtonClick(){ const dataToPass = { message : '这是从子组件发送的数据'}; this.triggerEvent('customEvent',dataToPass,{ bubbles:true,composed:false }); } } }); ``` 上述代码展示了如何让子组件调用父组件接收到的函数。具体来说就是父组件先声明了一个名为`handleCustomEvent`的方法用于响应子组件发出的通知;接着在渲染子组件的时候,通过`bindCustomEvent`这一属性指定了要关联的具体处理程序名称;最后子组件内部则负责收集必要的信息并通过`triggerEvent`机制反馈回去。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值