首页 > 编程语言 >#yyds干货盘点#【愚公系列】2023年02月 微信小程序-表格组件使用

#yyds干货盘点#【愚公系列】2023年02月 微信小程序-表格组件使用

时间:2023-02-17 23:32:22浏览次数:52  
标签:02 yyds false string function 微信 value 组件 table

前言

移动端的页面本应该很少有table表格这样的展示、操作,但总归有这样的需求,然而平时用的vant和iview的小程序组件库都没有table组件,这下面讲解表格组件封装的案例。

github网址:https://github.com/kawaiiz/table_component

在这里插入图片描述 使用说明

该组件具有 列表展示模式,勾选模式,展开行模式。

  1. 复制/miniprogram/public/components/public下面的三个组件,到你的公共组件文件夹下(其实这三个组件也是也可以合为一体,因为empty与load_more组件是可以单独使用的,所以没有放到table组件中)
  2. 在需要使用的页面引入table组件即可。

1、相关接口

属性:

参数 说明 类型 默认值 是否必填
columns 表格的配置 Columns[] [] true
dataList 数据 any[] [] true
getListLoading 请求列表的loading boolean false true
showTipImage 无数据时的提示文本图片 boolean false true
rowKey 用于指明行的唯一标识符,在勾选中有使用 string id false
tableHeight table高度。 string 600rpx false
tipTitle 无数据时的提示文本主标题 string 提示 false
tipSubtitle 无数据时的提示文本副标题 string 暂无数据 false
scrollX 是否需要X轴滚动。 boolean false false
select 控制是否出现勾选。 boolean false false
selectKeys 勾选的初始值 any[] [] false
generic:action-td 当列表项内具有操作列,需要在columns内添加type:action的一项,操作列的内容往往需要自定义,小程序不提供react,vue的rander函数,所以使用到了抽象节点,该属性指明抽象节点的组件。操作列位置可以不固定,点击事件由bindclickaction触发 component undefined false
isExpand 控制是否点击展开。 boolean false false
expandValueKey 展开信息的key值 string false
initExpandValue 当展开信息为空时的默认提示语 string '暂无信息' false
expandStyle 展开信息的最外层的样式 string '' false
generic:expand-component 如果展开区域的内容需要自定义,expandValueKey设置为空字符串,则切换到组件模式,传一个组件进来,展开区域的点击事件由bindclickexpand触发 component undefined false
dynamicValue 给自定义内容的动态值,用于改变状态 ,建议{value:放的数据} object {} false

事件:

事件 解释 类型
bindclicklistitem 点击列表行事件 Function(e); e.detail.value = {index:number(当前行序号),item: any(当前行的内容)}
bindclickexpand 点击展开内容事件 Function(e); e.detail.value = {type:(这个按钮的含义字段,如‘close’),index:(当前的行),item:(当前行的数据)};(这是我这里定义的结构,具体可以自己定义在expand-component里)}
bindclickaction 点击抽象节点事件 Function(e); e.detail.value = {type:(这个按钮的含义字段,如‘close’),index:(当前的行),item:(当前行的数据)};(这是我这里定义的结构,具体可以自己定义在action-td里)}
bindonactionevent 抽象节点内的业务事件触发 Function(e); e.detail.value = {type:(这个按钮的含义字段,如‘close’),index:(当前的行),item:(当前行的数据)};(这是我这里定义的结构,具体可以自己定义在action-td里)}
bindcheckkey 勾选事件 返回被勾选项的rowKey数组 Function(e); e.detail.value = any[]//(数组内每一项是rowKey字段定义的数据的toString()结果)
bindscrolltolower 滚动触底 Function()
bindscrolltoupper 滚动触顶 Function()

列配置: 列描述数据对象,是 columns 中的一项,Column 使用相同的 API。

事件 解释 类型 必填
title 字段名中文含义 string true
key 字段名 string true
width 单元格宽度 string false
type 判断字段是否是自定义组件 'action'/undefined false
render td内内容由函数返回 (value: any, item: any, index: number, data?: 当前页面的this.data) => any,// 设置内容 function false

一、表格组件使用

1.基础用法

1.1 代码

{
  "component": true,
  "usingComponents": {
    "table": "/public/components/public/table/table"
  }
}
<table class="basic-table" columns="{{tableColumns}}" dataList="{{dataList}}" getListLoading="{{getListLoading}}" showTipImage="{{dataList.length===0&!getListLoading}}" bindclicklistitem="handleClickItem" />
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
import { mockData } from '../../../../public/utils/util';
const app = getApp();
Component({
    options: {
        addGlobalClass: true,
    },
    properties: {},
    data: {
        tableColumns: [{
                title: "姓名",
                key: "name",
            }, {
                title: "年龄",
                key: "age",
            }, {
                title: "性别",
                key: "sex",
            }],
        dataList: [],
        pageNum: 1,
        pageSize: 10,
        pageCount: 1,
        getListLoading: false,
    },
    methods: {
        options: {},
        handleClickItem(e) {
            console.log(e);
            const { index, item } = e.detail.value;
            wx.showToast({
                title: `点击第${index + 1}行`
            });
        },
        getList() {
            return __awaiter(this, void 0, void 0, function* () {
                try {
                    const { pageNum, pageSize, pageCount, dataList, getListLoading } = this.data;
                    if (pageNum > pageCount)
                        return;
                    if (getListLoading)
                        return;
                    this.setData({
                        getListLoading: true,
                    });
                    const res = yield mockData('list', {
                        id: 1,
                        name: '兼职人员',
                        age: 10,
                        sex: '男',
                    }, "name", pageNum, pageSize);
                    this.setData({
                        dataList: dataList.concat(res.data.list),
                        pageCount: res.data.pageCount,
                        getListLoading: false,
                        pageNum: res.data.list.length > 0 ? pageNum + 1 : pageNum,
                    });
                }
                catch (e) {
                    this.setData({
                        getListLoading: false,
                    });
                    console.log(e);
                }
            });
        },
        initComponent() {
            this.getList();
        },
    },
    lifetimes: {
        attached: function () { },
        ready: function () { this.initComponent(); },
        moved: function () { },
        detached: function () { },
    },
    pageLifetimes: {
        show: function () { },
        hide: function () { },
        resize: function () { },
    },
});

1.2 效果

在这里插入图片描述

总结

本表格组件还可支持

  • 设置滚动区域高度
  • 横向滚动
  • 上拉加载和下拉重置刷新
  • 自定义TD内容和
  • 多选
  • 展开
  • 批量修改和单元格监听等等功能

标签:02,yyds,false,string,function,微信,value,组件,table
From: https://blog.51cto.com/u_15437432/6064567

相关文章

  • 2023/2/17 考试总结
    时间安排7.30~7.47发现重题,于是换题。7.47~7.52T1很sb,写了。O0O0O0OO0O0O0O0O0O0O0O0O0O0O0O00O7.52~8.40T2不是很sb,想了个状态数巨大的dp套dp。dfs搜了一下只有36......
  • misc图片隐写------2023.2.17
    1,查看属性2.伪装成图片的压缩包一般这种图片看起来和普通图片没什么区别,但其实这个图片是由压缩包伪装成的,一般flag的文本文件就藏在这个压缩包中3,修改图片宽高4,将flag......
  • 普通段位玩家的CV算法岗上岸之路(2023届秋招)
    前言在卷成麻花的2022年,一个没有上述背景、没有名校撑腰的普通科班小硕能入坑中大厂的CV算法岗吗?作者现身说法:还是能! 作者:记忆的迷谷@知乎(已授权CV技术指南转载)......
  • 20230217周报
    本周时间管理回顾时间管理记录本周手机使用时间理论上应该是变少了的,因为感觉工作效率还可以。但是实际一看,微信使用时长也快到了一个小时,非常莫名其妙。还是要减少看微......
  • 2023.2.17
    不知从什么时候开始记性变得不好,昨天记得有个被拿来和马库斯做过对比的巨人选手,结果费半天劲才想起来叫morganaste也许哪一天我就会啥也想不起来和何老师要了生日歌和生......
  • 论 2023 深圳市适应性考试的一道错题
    回顾一下问题:给定\(c_1,c_2\),要求\(\{A|A\inc_1,\existB\inc_2\\text{s.t.}\\text{dis}(A,B)\leq8\}\)。我们事实上找到了\(f:c_2\mapstoc_1\)满......
  • RSA常见题型------2023.2.17
    1,已知dp,dq求解m其中关系式如下:dp=d%(p-1)dq=d%(q-1)解题脚本:#!/usr/bin/python#coding:utf-8importgmpy2fromCrypto.Util.numberimportlong_to......
  • Office 2021 for Windows 简体中文 官网下载地址
    Office2021forWindows简体中文官网下载地址  Office2021简介 MicrosoftOffice2021ProPlus专业增强版包括对Word、Excel、PowerPoint、Outlook、OneNote......
  • PAT-basic-1002 写出这个数 java
    一、题目读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输......
  • 230217 关于英语学习的目标
    最近几天,你在听larry的英语课程.通过larry的介绍,你有了一些新的感触与理解.尤其是你关于你的英语的学习目标,你值得去深入思考,同时,不断校正与优化你的目标.之前,你......