微信小程序父子组件传递值和监听事件 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

微信小程序父子组件传递值和监听事件

发表时间:2021-2-3

发布人:葵宇科技

浏览次数:41

1.定义子组件Tabs

复制<!-- Tabs.wxml组件 -->
<view class="tab_wrapper">

  <view class="tab">
    <view class="{{currentIndex===index?'active':''}} title" wx:for="{{tabs}}" wx:key="id" bindtap="itemTap" data-index="{{index}}">
      {{item.name}}
    </view>
  </view>
  
  <view class="tabs_content">
    <slot></slot>
  </view>
  
</view>
复制// components/Tabs/Tabs.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    tabs: {
      type: Array,
      value: [],
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    currentIndex: 0,
  },

  /**
   * 组件的方法列表
   */
  methods: {
    itemTap(e) {
      const index = e.currentTarget.dataset.index;
      this.setData({
        currentIndex: index,
      });
      this.triggerEvent('itemTap', { index }); //子组件发送事件itemTap和一个obj作为参数
    },
  },
});

2.使用子组件

复制<!-- goods_list.wxml -->
<!-- 商品列表 开始 -->
<view>
  <Tabs tabs="{{tabs}}" binditemTap="ItemTap">
    <block wx:if="{{currentIndex===0}}">0</block>
    <block wx:if="{{currentIndex===1}}">1</block>
    <block wx:if="{{currentIndex===2}}">2</block>
  </Tabs>
</view>
<!-- 商品列表 结束 -->
复制// pages/goods_list/goods_list.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    tabs: [
      { id: 0, name: '综合' },
      { id: 1, name: '销量' },
      { id: 2, name: '价格' },
    ],
    currentIndex: 0,
  },

  // 监听子组件传递的事件
  ItemTap(e) {
    this.setData({
      currentIndex: e.detail.index, //e.detail.index是子组件传递过来的index
    });
  },
注:以上内容仅用于日常学习

相关案例查看更多