时间:2021-05-26
饿了么的table组件功能很强大,对于项目中的各种表格基本够用,但是……个人对于它以列为单位的操作不习惯 =。=所以改成了另一种方式(我不会告诉你其实本质没变)。
项目中表格较多,所以复用性最重要
步骤一
先来个基本的表格展示
官例的tableData
tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄'}, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄'}, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄'}, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄'}]table.vue
<template> <el-table :data="tableData" border> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table></template>步骤二
简化一下表格:
//table.vue<template> <el-table :data="tableData" border> <el-table-column v-for="(item,key) in tableKey" :key="key" :prop="item.value" :label="item.name"></el-table-column> </el-table></template><script>export default{ name: 'table', data(){ return{ tableData:[...], tableKey: [{ name: 'date', value: '日期' },{ name: '姓名', value: 'name' },{ name: '地址', value: 'address' }] } }}</script>步骤三
复用table.vue就是————给它数据的同时告诉它我的字段名呗
新建一个父组件sl_table.vue
//sl_table.vue<template> <sl-table :tableData="tableData" :tableKey="tableKey"></sl-table></template><script>import Table from '@/components/table'export default{ name: 'sl-table', data(){ return { tableData: [...] tableKey: [{ name: 'date', value: '日期' },{ name: '姓名', value: 'name' },{ name: '地址', value: 'address' }] } }, components: { 'sl-table': Table }}</script>table.vue就更简单了
//table.vue<template> <el-table :data="tableData" border> <el-table-column v-for="(item,key) in tableKey" :key="key" :prop="item.value" :label="item.name"></el-table-column> </el-table></template><script>export default{ name: 'table', data(){ return{ } }, props:['tableData','tableKey'],}</script>步骤四
可以根据需求修改table的形式
列宽度
这个较为简单,可以直接加个属性
table.vue
自定义模板列
如果我们需要告诉组件哪个是自定义的列,所以添加一个属性operate
table.vue
<el-table-column v-for="(item,key) in tableKey" v-if="!item.operate":key="key":prop="item.value":label="item.name":width="item.width"></el-table-column><!-- 自定义 --><el-table-column v-else> <template scope="scope"> <slot :name="item.value" :$index="scope.$index" :row="scope.row"></slot> </template></el-table-column>//sl_table.vue<sl-table :tableData="tableData" :tableKey="tableKey"> <template slot="date" scope="scope"> <span>{{ scope.row.date | DateFilter }}</span> </template></sl-table>... data(){ return { tableData: [...] tableKey: [{ name: 'date', value: '日期', operate: true },{ name: '姓名', value: 'name', operate: false },{ name: '地址', value: 'address', operate: false }] } }, filters: { DateFilter(){...} }...表格展开行
类似宽度,只要sl_table.vue传入一个isExpand的属性。这里加个每次只能展开一行的效果:
table.vue
其他的(排序、多选)操作也是类似添加。。。多不赘述。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在vue2.0中引用element-ui组件库element-ui是由饿了么团队开发的一套基于Vue2.0的桌面端组件库。官网:http://element.e
本文介绍了vue项目中使用element-ui的Upload上传组件的示例,分享给大家,具体如下:确定其中importFileUrl是后台接口,upLoadDa
前言随着我们vue3.0的出现,我们的ui组件库也有了一些变化,像我们的旧版的element-ui已经不能在vue3.0中使用了,如果要使用element的话需
因为项目中用的是element-ui框架,而这个框架并没有抽屉组件,所以自己实现一个,具体代码如下:drawer.vue{{title}}Xexportdefa
element-ui组件的tree树形控件修改源码改为iview组件实现原理修改了element-ui源码,把源码里面的tree模块提取出来然后修改elemen