前提:微信小程序自1.6.3基础库版本库开始支持简洁组件,之前的版本因不支持,故在引用组件处默认为空节点。关于微信小程序已有模板为何还需构建组件?一是因为组件可以更方便的自定义并绑定行为,二是在其他页面引用时,无需通过import,只需在该页面json文件下配置usingComponents属性即可。(原本想在app.json文件里配置这个属性,从此一劳永逸,但目前貌似还不支持,至少我尝试的时候还不行-.-)

思路:主要是将table的head和tbody部分的数据抽象出来,使之只需要传值就可直接引用(如果用过react、vue等框架,微信小程序组件上手起来会更快,无非就是多了一丢丢配置而已)。

1、首先我们先来搭好table组件的页面布局:

<view class="table-outer-box">
<view class="table table-theme table-flex">
<view class="item" wx:for="{{tableThemes}}" wx:key="{{index}}">{{item}}</view>
</view>
<scroll-view class="scroll-view flex-column" scroll-y="true" bindscrolltolower="loadMore">
<view class="table table-item table-flex" wx:for="{{tableItems}}" wx:key="{{index}}">
<view class="item" wx:for="{{item}}" wx:key="{{index}}">{{item}}</view>
</view>
</scroll-view>
</view>
 

2、接着我们再来填充table样式:

.table-outer-box {
display: flex;
flex-direction: column;
padding: 50rpx 50rpx 0;
flex: 1;
}
.table {
height: 80rpx;
color: #fff;
line-height: 80rpx;
border-top: 1rpx solid #5f677a;
border-bottom: 1rpx solid #5f677a;
text-align: center;
}
.table-flex {
display: flex;
}
.table-theme {
font-size: 28rpx;
}
.table-item {
font-size: 24rpx;
opacity: 0.6;
}
.item {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
flex: 1;
}
.scroll-view {
flex: 1;
}
 
3、接下来,我们到组件json文件里设置component属性为true
{
"component": true
}
 
4、紧接着,我们到组件js里注册该组件:
Component({
properties: {
tableThemes: {
type: Object, // 因此处的thead是json格式,故将数据类型设置为object
// value: '' //默认值
},
tableItems: {
type: Array,
},
},
data: {
someData: {} // 暂未设置,跟其他页面的data属性和用法类似
},
methods: {
customMethod: function() {
// 暂为定义
}
}
});
 

5、然后,在要引用的test页面的json文件里添加usingComponents属性

{
"navigationBarTitleText": "table test",
"usingComponents": {
"table": "../../components/Table/index"
}
}
 
6、再然后,在要引用的test页面的wxml文件里直接用table标签引入:
<view class="container">
<view class="title">table component</view>
<table tableThemes="{{themeArr}}" tableItems="{{itemArr}}"></table>
</view>
 
7、最后,在test页面的js文件里赋值给tableThemes、tableItems属性(本栗因无api返回,故均采用默认数据)
Page({
data: {
themeArr: {nickName: '昵称', age: '年龄', tell: '电话', address: '住址'},
itemArr: [
{nickName: 'Anna', age: 25, tell: 121243423424, address: 'tianfuStreet'},
{nickName: 'Tina', age: 25, tell: 121243423424, address: 'tianfuStreet'},
{nickName: 'Tom', age: 25, tell: 121243423424, address: 'tianfuStreet'},
{nickName: 'Alex', age: 25, tell: 121243423424, address: 'tianfuStreet'},
{nickName: 'Hallen', age: 25, tell: 121243423424, address: 'tianfuStreet'},
{nickName: 'Lucy', age: 25, tell: 121243423424, address: 'tianfuStreet'},
]
},
onLoad() {
console.log('test is loaded');
}
});
 
test页面样式:
.container {
width: 100%;
height: 100%;
background: black;
}
 
.title {
font-size: 35rpx;
color: #fff;
text-align: center;
}
 
最终效果图如下:
 

微信小程序简易table组件实现的更多相关文章

  1. 微信小程序-简易计算器

    代码地址如下:http://www.demodashi.com/demo/14210.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  2. 原创:WeZRender:微信小程序Canvas增强组件

    WeZRender是一个微信小程序Canvas增强组件,基于HTML5 Canvas类库ZRender. 使用 WXML: <canvas style="width: 375px; h ...

  3. 微信小程序之swiper组件高度自适应

    微信小程序之swiper组件高度自适应 要求: (顶部广告栏 ) 改变swiper组件的固定高度,使之随内部每张图片的高度做自适应 原理: 图片加载完之后,获取图片的原始宽高,根据宽高比,计算出适应后 ...

  4. 微信小程序中的组件使用1

    不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...

  5. 微信小程序基于swiper组件的tab切换

    代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  6. 关于微信小程序前端Canvas组件教程

    关于微信小程序前端Canvas组件教程 微信小程序Canvas接口函数 ​ 上述为微信小程序Canvas的内部接口,通过熟练使用Canvas,即可画出较为美观的前端页面.下面是使用微信小程序画图的一些 ...

  7. uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤

    uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤 这里以vant-weapp为例 uni-app官方文档介绍引入组件的方法 1. 新建相关目录 根目录下创建 wxcomponen ...

  8. 微信小程序校历组件

    微信小程序校历组件 校历组件,可以作为校园小程序的插件,如果觉得不错,点个star吧

  9. 微信小程序内置组件web-view的缓存问题探讨

    前言:博客或者论坛上面,还有自习亲身经历,发现微信小程序的webview组件的页面缓存问题相当严重,对开发H5的小童鞋来说应该困扰了不少.很多小童鞋硬是抓破脑袋也没有办法解决这个问题,那我们今天就来探 ...

随机推荐

  1. BZOJ4735:你的生命已如风中残烛(组合数学)

    Description 众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习.但是今天六花酱不想做数学题,于是他们开始打牌. 现在他们手上有m张不同的牌,牌有两种:普通牌和功能牌.功能牌一 ...

  2. Nginx HTTPS功能部署实践

    本文出处:http://oldboy.blog.51cto.com/2561410/1889346 30.1 文档目的 本文目的提高自己文档的写作能力及排版能力,加强上课所讲的内容得以锻炼也方便自己以 ...

  3. javascript仿新浪微博图片放大缩小及旋转效果

    javascript仿新浪微博图片放大缩小及旋转效果 经常看到新浪微博里有图片放大缩小旋转效果,感觉效果还不错,所以就想试着做一个类似的demo出来,至于旋转对于IE可以用滤镜来解决,标准的浏览器可以 ...

  4. jqgrid 配置分页大小及下拉项

    如何配置分页大小的下拉项?显示效果如下: 通过 rowNum 来设置默认分页大小 通过 rowList 来设置分页下拉.   rowList 的值为一个数组,比如:[10,20,30] $(" ...

  5. Android“寄生兽”漏洞技术分析

    一.关于app的缓存代码 安卓的应用程序apk文件是zip压缩格式的文件,apk文件中包含的classes.dex文件相当于app的可执行文件,当app运行后系统会对classes.dex进行优化,生 ...

  6. 通过定义过滤器filter解决跨域问题

            跨域是比较常见问题,比较简单的方式就是直接定义一个过滤器filter,然后在请求头里面加上一些参数.下面来看看具体的写法吧. 一.java代码 package com.hj.usera ...

  7. WPF编程,通过Double Animation动态旋转控件的一种方法。

    原文:WPF编程,通过Double Animation动态旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/art ...

  8. ListBox项模板中绑定ListBoxItem属性的方法

    原文:ListBox项模板中绑定ListBoxItem属性的方法 <ListBox> <ListBox.ItemTemplate> <DataTemplate> & ...

  9. Compensating-Transaction模式

    在应用中,会将一系列相关的操作定义为一个连续的操作,当其中一个或者多个步骤失败的时候,Compensating-Transaction模式会重置(回滚)这个连续的操作.在云应用中,这些需要保证一致性的 ...

  10. Tarjan&&缩点简析

    由于昨天写计蒜客初赛的一道题,看出了是缩点,但一时忘记了另外一个叫什么s...的算法怎么写了,话说我为什么没有回去翻一下自己的blog然后今天就去学了更实用也更强力的Tarjan Tarjan的思想其 ...