当前位置: 首页 > article >正文

第60讲公共Tabs组件封装

新建Tabs组件
Tabs.wxml

<view class="tabs">
  <view class="tabs_title">
    <view
      bindtap="handleItemTap"
      data-index="{{index}}"
      wx:for="{{tabs}}"
      wx:key="id"
      class="title_item {{item.isActive?'active':''}}">
      {{item.value}}
    </view>
   
  </view>
  <view class="tabs_content">
    <slot></slot>
  </view>
</view>

Tabs.wxss

.tabs .tabs_title {
  display: flex;
}
.tabs .tabs_title .title_item {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 15rpx 0;
  flex: 1;
}
.tabs .tabs_title .active {
  color: var(--themeColor);
  border-bottom: 5rpx solid currentColor;
}

Tabs.js

// components/Tabs/Tabs.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    tabs:Array,
    value:[]
  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {
    handleItemTap(e){
      // 获取索引
      const {index}=e.currentTarget.dataset;
      // 触发 父组件中的自定义事件
      this.triggerEvent("tabsItemChange",{index});
    }
  }
})

order里面:

引入组件:

{
    "usingComponents": {
        "Tabs":"../../components/Tabs/Tabs"
    },
  "navigationBarTitleText": "订单查询",
  "enablePullDownRefresh":true,
  "backgroundTextStyle":"dark"
  }

传入handleTabsItemChange事件

<!-- <view class="tabs">
  <view class="tabs_title">
    <view
      bindtap="handleItemTap"
      data-index="{{index}}"
      wx:for="{{tabs}}"
      wx:key="id"
      class="title_item {{item.isActive?'active':''}}">
      {{item.value}}
    </view>
   
  </view>
  <view class="tabs_content">
    <view class="order_main">
      <view 
        wx:for="{{orders}}"
        wx:key="id"
      class="order_item">
        <view class="order_no_row">
          <view class="order_no_text">订单编号</view>
          <view class="order_no_value">{{item.orderNo}}</view>
        </view>
        <view class="order_price_row">
          <view class="order_price_text">订单价格</view>
          <view class="order_price_value">¥{{item.totalPrice}}</view>
        </view>
        <view class="order_time_row">
          <view class="order_time_text">订单日期</view>
          <view class="order_time_value">{{item.createDate}}</view>
        </view>
      </view>
    </view>
  </view>
</view> -->

<Tabs tabs="{{tabs}}" bindtabsItemChange="handleTabsItemChange">
  <view class="order_main">
      <view 
        wx:for="{{orders}}"
        wx:key="id"
      class="order_item">
        <view class="order_no_row">
          <view class="order_no_text">订单编号</view>
          <view class="order_no_value">{{item.orderNo}}</view>
        </view>
        <view class="order_price_row">
          <view class="order_price_text">订单价格</view>
          <view class="order_price_value">¥{{item.totalPrice}}</view>
        </view>
        <view class="order_time_row">
          <view class="order_time_text">订单日期</view>
          <view class="order_time_value">{{item.createDate}}</view>
        </view>
      </view>
    </view>
</Tabs>

改个事件名:获取Tabs组件传来的index

  
    /**
     * tab点击事件处理
     * @param {} e 
     */
    handleTabsItemChange(e){
    //   const {index}=e.currentTarget.dataset;
     const {index}=e.detail;  
    // 切换标题
      this.changeTitleByIndex(index);
      
      // 获取订单列表
      this.QueryParams.type=index;
      this.QueryParams.page=1;
      this.setData({
        orders:[]
      })
      this.getOrders();
  
    },

http://www.kler.cn/a/232824.html

相关文章:

  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • 不对称信息
  • 网页版五子棋——对战模块(服务器端开发②)
  • 金价大跌,特朗普胜选或成导火索
  • redhat虚拟机
  • power bi中的related函数解析
  • MQTT 服务器(emqx)搭建及使用
  • 机器人搬砖 - 华为OD统一考试
  • C++服务器端开发(7):并发处理
  • FolkMQ “单线程“消息中间件(开源) v1.0.32 发布
  • 【笔记】Helm-5 Chart模板指南-8 命名模板
  • 排序算法---堆排序
  • CTF--Web安全--SQL注入之‘绕过方法’
  • 基于ISO13400 (DoIP) 实现车辆刷写
  • 网络编程..
  • 突然,有点不喜欢梅西了
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件
  • 【QT学习十四】 文件目录操作
  • 自然语言NLP
  • 适用于 Windows 的 6 款 iPhone 数据恢复软件
  • 基于微信小程序的新生报到系统的研究与实现,附源码
  • 医学考试搜题答案这7款足够解决问题 #笔记#知识分享#其他
  • SpringBoot源码解读与原理分析(六)WebMvc场景的自动装配
  • 507. Perfect Number(完美数)
  • Python循环语句——for循环临时变量作用域
  • SSL和Kerberos身份验证的区别?