APICloud AVM框架封装数据表格组件

用以展示基础表格数据的组件。

组件的核心功能点是在数据展示的时候,用到了2个v-for循环,第一层循环是数据对象的循环,然后嵌套列名的对象,通过列名中的key值在数据对象中查询对应的数据,这样就保证了在数据对象与列名对象顺序打乱的情况下也可以把数据对应起来,并能够在列名没有对应的数据的时候进行特殊处理。以APICloud AVM框架封装数据表格组件为例。

组件文件

easy-data-grid.stml

<template> <view class="easy-data-grid_contanier"> <view class="easy-data-grid_header"> <view class="easy-data-grid_header-item" v-for="(item, index) in columns">

<text class="easy-data-grid_header-item-content">{item.lable}</text>

</view> </view> <scroll-view class="easy-data-grid_tbody" scroll-y> <view class="easy-data-grid_tbody-item" v-for="(item, index) in dataList"> <view class="easy-data-grid_tbody-item-columns" v-for="(itemcol,indexcol) in columns">

<text class="easy-data-grid_tbody-item-content" v-if="item[itemcol.key]">{item[itemcol.key]}</text>

<text class="easy-data-grid_tbody-item-content" v-else>/</text>

</view> </view> </scroll-view> </view> </template> <script> export default { name: 'easy-data-grid', props:{ columns:Object, dataList:Object }, data() { return{ } }, methods: { } } </script> <style> .easy-data-grid_header{ flex-flow: row nowrap; justify-content: space-between; align-items: center; width: 100%; } .easy-data-grid_header-item{ background-color: #cccccc; text-align: center; justify-content: center; flex-flow: row nowrap; padding: 5px; width: 20%; } .easy-data-grid_header-item-content{ font-size: 15px; font-weight: bolder; } .easy-data-grid_tbody{ height: 200px; } .easy-data-grid_tbody-item{ flex-flow: row nowrap; justify-content: center; align-items: center; border-bottom: 0.5px solid #cccccc; padding: 5px 0; width: 100%; } .easy-data-grid_tbody-item-columns{ flex-flow: row nowrap; text-align: center; width: 20%; justify-content: center; } .easy-data-grid_tbody-item-content{ font-size: 14px; } </style>

组件使用

demo-easy-data-grid.stml

<template> <view class="page">

<safe-area></safe-area>

<easy-data-grid

:columns={columns}

:dataList={dataList}

</easy-data-grid>
</view> </template> <script> import '../../components/easy-data-grid.stml' export default { name: 'demo-easy-data-grid', apiready(){//like created }, data() { return{ columns:[ { lable: '姓名', key: 'name', },{ lable: '年龄', key: 'age', },{ lable: '性别', key: 'sex', },{ lable: '职业', key: 'office', },{ lable: '学历', key: 'edu', } ], dataList:[ {name:'张一',age:'12',sex:'男',office:'技术工程师',edu:'大学本科'}, {name:'王三',age:'20',sex:'男',office:'车间工人',edu:'博士'}, {name:'张二',age:'30',sex:'男',office:'销售人员',edu:'本科'}, {office:'技术专家',name:'李一',age:'18',sex:'女',edu:'专科'}, {age:'12',sex:'男',name:'张三',office:'集团老板',edu:'小学'}, {name:'张四',sex:'男',age:'20'}, {sex:'男',name:'张五',age:'30'}, {name:'张刘一',age:'18',sex:'女'} ] } }, methods: { } } </script> <style> .page { height: 100%; background-color: #f0f0f0; } </style>
点赞
收藏

评论区

加载中...

相关推荐

android Activity之间的参数传递

在开发web程序的时候,我们都知道web页面之间是可以传递参数的,在android中,每一个activity就相当于一个页面(窗口),当然,它也是可以传递参数的。思路:通过Intent激活组件(Activity),附带数据Intent(意向):一:通过Intent对象可以激活组件activity,具体有五种方式:方式1:

Vue方向:prop验证

我们可以为组件的prop指定验证规则,如果传入的数据不符合要求,Vue会发出警告,这对于开发给他人使用的组件非常有用。要指定验证规则,需要用对象的形式来定义prop,而不能用字符串数组;1、验证父组件传递过来的数据类型props选项值如果为数据,则表示只是单纯的罗列父组件传递过来的数据而已如果props选项的值是一个对象,那么表示要验证接收的

mysql去除数据中的回车符,空白符,换行符,水平制表符

1,在将utf8编码的txt文件导入数据库的时候,可能会遇到将不可见字符(回车,换行)导入数据的情况,这样查询就会失效,这时可以利用update和replace来替换这些字符。UPDATE表名 SET 列名 REPLACE(REPLACE(REPLACE(REPLACE(列名,CHAR(10),''),CHAR(13),''),CHA

Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO之dozer mapper使用

PO(persistantobject)持久对象在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记

Unity ECS 框架

20180312ECS编程思想这种编程思想很早前就已经提出,ECS分别是Entity,Component,System的缩写.Entity是实例,作为承载组件的载体,也是框架中维护对象的实体.Component只包含数据,具备这个组件便具有这个功能.System作为逻辑维护,维护对应的组件执行相关操作.E

Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

PO(persistantobject)持久对象在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记