微信小程序组件传参和交互

1. 自定义组件 与 父组件相互传参

parent.wxml

<view class="echaerBox">
  <pie class="pieEchart" style="height: 200px;" echartData="{{echartData}}" bind:parentEvent='onParentEvent'></pie>
</view>

parent.wxs

onParentEvent: function (event) {
    // 自定义组件触发事件时提供的detail对象,用来获取子组件传递来的数据
    console.log('子组件传递来的数据 id:', event);
  },

child.wxml

onTapChild: function(event){
      // detail对象,提供给事件监听函数
      var myEventDetail = {
        id: 11111111111
      } 
      // 触发事件的选项
      var myEventOption = {}     
      // 使用 triggerEvent 方法触发自定义组件事件,指定事件名、detail对象和事件选项   bubbles:是否冒泡,composed:是否可以穿越组件边界,capturePhase: 是否拥有捕获阶段
      this.triggerEvent('parentEvent', myEventDetail, myEventOption)
}

2. 父组件调用自定义组件的事件

parent.wxml

<view class="echaerBox">
  <pie class="pieEchart" style="height: 200px;" echartData="{{echartData}}" 
  id="pieCom" 
  bind:parentEvent='onParentEvent'></pie>
    <button bindtap="bindbtn">params</button>
</view>

parent.js

data: {
    pieCom: null,
}

onReady: function () {
    this.pieCom = this.selectComponent('#pieCom')
},

bindbtn(e){
    let pieCom = this.pieCom
    pieCom.outStr()  // 调用自定义组件中的方法
},

child.wxs

outStr(){
      console.log('子组件输出')
}

 

posted @ 2022-03-28 19:07  番茄西红柿u  阅读(437)  评论(0)    收藏  举报