zoukankan      html  css  js  c++  java
  • 小程序自定义组件

    小程序自定义组件

    一、 父组件中的相关代码如下

    1. 在自定义组件的文件夹中创建一个Tabs的组件,如下:

      

     wxml中代码如下:

    <!--components/Tabs.wxml-->
    <view class="tabs">
      <view class="tabs_title">
          <!-- 遍历子模块中的数组,注意这个tabs是从模块中传过来的 -->
        <view wx:for="{{tabs}}" wx:key="id" class="title_item {{item.isActive?'active':''}}" bindtap="handleItemTab"
          data-index="{{index}}">
          {{item.value}}
        </view>
      </view>
      <view class="tabs_content">
        <slot></slot>
      </view>
    </view>

    其中 handleItemTab中的相关代码如下:

     methods: {
        //点击事件
        handleItemTab(e){
          console.log(e);
          const {index}=e.currentTarget.dataset
          //定义自定义事件
          this.triggerEvent("TabsItemChanges",{index})
          console.log(index)
        }
      }

    便利的元素是在子模块中定义的数组,所以需要接收过来,就是上方用到的tabs,那么是如何使用子模块中的数据,如下就是接收的关键代码:

    /**
       * 组件的属性列表
       */
      properties: {
        //接收tabs的数据
        tabs:{
          type:Array,
          value:[]
        }
      },

    二、子模块中的代码:

    1. 先在.json文件中引用这个公共的模块。

    "usingComponents": {
        "Tabs":"../../components/Tabs"
      },

     2. wxml中使用上面的Tabs组件,如下:其中tabs是把定义的数据传送给父组件中,handletabsItemChange主要是在模块中更新数据的值。

      <Tabs tabs="{{tabs}}" bindTabsItemChanges="handletabsItemChange">
      <block wx:if="{{tabs[0].isActive}}">1</block>
      <block wx:elif="{{tabs[1].isActive}}">2</block>
      <block wx:elif="{{tabs[2].isActive}}">3</block>
      </Tabs>

    3. js中的代码如下:其中主要是定义的数据对象和方法:

      handletabsItemChange(e){
        console.log(e);
        //获取被点击的标题索引
        const {index}=e.detail;
        //修改激活的选中效果,修改原数组
        let {tabs}=this.data;
        tabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false);
        this.setData({
          tabs
        })
      },

    数据对象

    /**
       * 页面的初始数据
       */
      data: {
        tabs:[
          {
            id:0,
            value:"综合",
            isActive:true
          },
          {
            id:1,
            value:"销量",
            isActive:false
          },
          {
            id:2,
            value:"价格",
            isActive:false
          }
        ]
      },

     三、最终实现的效果如下:

      

  • 相关阅读:
    Add Two Numbers
    Reverse Linked List II
    Reverse Linked List
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
    Partition List
    Intersection of Two Linked Lists
    4Sum
    3Sum
    2Sum
  • 原文地址:https://www.cnblogs.com/wangjinya/p/15150506.html
Copyright © 2011-2022 走看看