久久精品视频18|18xxxx视频|欧美18xxxx|18xxxx中国|俄罗斯18xxxx|成人18禁|黄瓜视频18|污污污视频在线观看

小程序模板網

微信小程序自定義組件 - 表格組件來啦

發布時間:2020-05-14 10:20 所屬欄目:小程序開發教程

針(zhen)(zhen)對上期打卡(ka)需(xu)求開發(fa),這期需(xu)要以列表的(de)形式展(zhan)現打卡(ka)記(ji)錄,但(dan)是(shi)(shi)微信小程序并沒(mei)有(you)表格組件(jian),可能是(shi)(shi)官方考慮到(dao),在前端開發(fa)中,表格一直都是(shi)(shi)最復雜(za)的(de)組件(jian)之一就沒(mei)有(you)實現吧。沒(mei)有(you)現成的(de)組件(jian)可以使用,針(zhen)(zhen)對這個問(wen)題,目前有(you)兩種解決方案:

table組件
table組件

第一期打卡采用的原生(sheng)開(kai)發(fa)的,老板期望第二(er)期需求也(ye)能用原生(sheng),方便后期的維護。于是(shi)乎,我就開(kai)始了(le)造輪子啦:joy:。需要table組件滿(man)足(zu)一下(xia)功(gong)能:

  • 主要用于展示結構化數據;
  • 支持自定義操作;
  • 支持自定義表頭樣式;
  • 支持固定表頭,可左右滾動等功能。

table組件效果展示

miniprogram-table-component 小(xiao)程序自定義(yi)table組件(jian)

使用(yong)此組件(jian)需(xu)要(yao)依(yi)(yi)賴小程(cheng)序基礎庫 2.2.2 版(ban)本,同時依(yi)(yi)賴開(kai)發者工具的(de) npm 構建。

1.基礎表格

2.帶斑馬紋表格

3.帶間隔邊框表格

4.自定義無數據的提示文案

5.自定義表格頭樣式

6.固定表頭

7.表格橫向滑動

8.自定義表格行和單元格樣式

快速上手

一(yi)個(ge)簡易的微信(xin)小程序 table組(zu)(zu)件 誕(dan)生了(le)(le)。新鮮熱乎的,前面(mian)看(kan)完了(le)(le)展現效(xiao)果,接(jie)下來介(jie)紹使(shi)用(yong)(yong)。 自(zi)定義的 table 組(zu)(zu)件,使(shi)用(yong)(yong)很簡單,就是按照npm包和(he)微信(xin)自(zi)定義組(zu)(zu)件的方法使(shi)用(yong)(yong)。

1、安裝和引入

  • 安裝組件:
npm install --save miniprogram-table-component
復制代碼
  • 引入table自定義組件

在頁面的(de) json 配(pei)置(zhi)文件(jian)中添加 recycle-view 和 recycle-item 自(zi)定義組件(jian)的(de)配(pei)置(zhi)

{
  "usingComponents": {
    "table-view": "../../../miniprogram_npm/miniprogram-table-component"
  }
}
復制代碼

注(zhu)意:npm包(bao)的(de)路徑。如(ru)果這里遇到(dao)找不到(dao)包(bao)的(de)問題(ti),可以查看(kan)下方的(de) 微(wei)信小程(cheng)序 npm 找到(dao)不到(dao)npm包(bao)的(de)坑(keng)?

2、使用table組件

在wxml頁面需要用到的地方使用,如下:

<table 
    headers="{{tableHeader}}" 
    data="{{ row }}" 
    stripe="{{ stripe }}"
    border="{{ border }}"
/>
復制代碼

在js頁(ye)面需(xu)要用到(dao)的(de)地方(fang)使用,如下:

Page({
  /**
   * 頁面的初始數據
   */
  data: {
    tableHeader: [
      {
        prop: 'datetime',
        width: 150,
        label: '日期',
        color: '#55C355'
      },
      {
        prop: 'sign_in',
        width: 152,
        label: '上班時間'
      },
      {
        prop: 'sign_out',
        width: 152,
        label: '下班時間'
      },
      {
        prop: 'work_hour',
        width: 110,
        label: '工時'
      },
      {
        prop: 'statusText',
        width: 110,
        label: '狀態'
      }
    ],
    stripe: true,
    border: true,
    outBorder: true,
    row: [
      {
          "id": 1,
          "status": '正常',
          "datetime": "04-01",
          "sign_in_time": '09:30:00',
          "sign_out_time": '18:30:00',
          "work_hour": 8,
      }, {
          "id": 2,
          "status": '遲到',
          "datetime": "04-02",
          "sign_in_time": '10:30:00',
          "sign_out_time": '18:30:00',
          "work_hour": 7,
      }, {
          "id": 29,
          "status": '正常',
          "datetime": "04-03",
          "sign_in_time": '09:30:00',
          "sign_out_time": '18:30:00',
          "work_hour": 8,
      }, {
          "id": 318,
          "status": '休息日',
          "datetime": "04-04",
          "sign_in_time": '',
          "sign_out_time": '',
          "work_hour": '',
      }, {
          "id": 319,
          "status": '正常',
          "datetime": "04-05",
          "sign_in_time": '09:30:00',
          "sign_out_time": '18:30:00',
          "work_hour": 8,
      }
    ],
    msg: '暫無數據'
  },

  /** 
   * 點擊表格一行
   */
  onRowClick: function(e) {
    console.log('e: ', e)
  }
})
復制代碼

3、配置

配置(zhi)部分主要配置(zhi)這么幾個屬性(xing),分別是(shi):

配置項 說明 類型 可選值 默認值 必填
headers 表格頭部標題、列寬度、列屬性 Array {prop: 'datetime', width: 150, label: '日期'} [] yes
data 表格列表數據 Array   [] no
stripe 是否為斑馬紋 boolean true/false false no
border 是否有間隔線 boolean true/false false no
height 縱向內容過多時,可選擇設置高度固定表頭。 string   auto no
msg 固定無數據情況,展示文案 string   暫無數據~ no
header-row-class-name 自定義表格頭樣式 string     no
row-class-name 自定義表格行樣式 string     no
cell-class-name 自定義單元格樣式 string     no
bind:rowHandle 行被點擊時會觸發該事件 function     no

配(pei)置相關(guan)代碼:chestnut::

<table  
      header-row-class-name="header-class"
      row-class-name="row-class"
      cell-class-name="cell-class"
      headers="{{tableHeader}}" 
      data="{{ row }}" 
      stripe="{{ stripe }}"
      height="{{ height }}"
      border="{{ border }}"
      bind:rowClick="onRowClick"
      bind:cellClick="onCellClick" 
      no-data-msg="{{ msg }}"
/> 
復制代碼

header-row-class-name&nbsp;、 row-class-name 、 cell-class-name 是通過(guo)externalClasses支持(chi)外部樣(yang)式(shi)(shi),在父組件(jian)中控(kong)制(zhi)表(biao)格的樣(yang)式(shi)(shi), externalClasses外部樣(yang)式(shi)(shi)類, 官方說明 。例子源碼(ma)通過(guo)  查看。

實現一個自定義表格組件遇到的坑

npm 登錄不上和發布不了的問題?

 之前也(ye)發(fa)布過 npm 包,遺忘了&nbsp;npm login 登錄不上需要(yao)將淘寶鏡像(xiang)改回npm的。還有(you)一點需要(yao)注意的是,每次發(fa)布都需要(yao)更新(xin) package.json 文(wen)件里的版本號。

微信小程序 npm 找到不到npm包的坑?

組件(jian)開發完,引入使(shi)用的(de)時候,發現npm的(de)包(bao),找不到了?這里比較坑的(de)是小(xiao)程序的(de)npm有特殊的(de)使(shi)用方式。

  • 首先在項目的根目錄初始化 npm:
npm init -f 
復制代碼
  • 然后安裝對應的自定義組件包
npm install -production miniprogram-table-component
復制代碼

npm/cnpm/yarn add 均可

  • 在微(wei)信開發者(zhe)工(gong)具中,設(she)置(zhi) —> 項目設(she)置(zhi)—> 勾選使用npm模塊。

  •  在(zai)微(wei)信開(kai)發(fa)者(zhe)工(gong)具中,工(gong)具 —> 構建(jian)npm,構建(jian)完成會生成 miniprogram_npm 文件夾,項目用(yong)到(dao)的npm包(bao)都在(zai)這里。

  • 按照自己的(de)使用路徑,從 miniprogram_npm 引入需要的(de)包。

table組件源碼

  • table組件npm地址

需求開發時間比(bi)較緊迫,也是(shi)盡量提高工作效率,把大塊(kuai)時間用(yong)來封裝組(zu)件(jian)了。愛越折騰啊,也算是(shi)適當給自己(ji)的(de)(de)項目增加(jia)點(dian)難度,多一點(dian)追(zhui)求,技(ji)術就會成長(chang)的(de)(de)更快(kuai)。


易優(you)小程序(xu)(企業(ye)版)+靈活api+前后代碼開源 碼云(yun)倉(cang)庫:
本文地址://www.zhutiquan.com/wxmini/doc/course/25173.html 復制鏈接 如需(xu)定制請聯(lian)系易優客服(fu)咨詢:

工作日 8:30-12:00 14:30-18:00
周六及部分(fen)節假日提供值班服(fu)務

易小(xiao)優
轉人工(gong) ×