vue element-ui table组件的动态label和动态slot跳转
近期工作中有个需求需要对多条每个月数据进行表格展示,由于每个月数据是递增的今年5月、6月、7月等,并且用户能够根据点击的月份数据跳转到当月详情。
接受数据例子:
json = { content:[ { userName:‘你是帅哥’, userId: ‘123’ monthData: [ { key:2021-09,value:12}, { key:2021-10,value:13}, { key:2021-11,value:14} ] }, { userName:‘看你确实有点帅’, userId: ‘12345’ monthData: [ { key:2021-09,value:24}, { key:2021-10,value:25}, { key:2021-11,value:26}, { key:2021-12,value:30} ] } ] }
- 由于需要将monthData数据按月份加入到表格label中 所以table组件的label不能直接写死,需要随着数据增加而动态增加。
- 对于表格中每月的每条数据能够点击跳转到当月详情页面,在element-ui-table 组件中使用的slot进行点击跳转。
动态将月数据加入label
// 假设json数据已得到 //每次查询记得初始化这两个数组 let list = [] // this.slotList = [] // // 1. 获得最大值,避免label与数据对应不上 let maxLength = Math.max.apply(Math, json.map) => { return item.monthData.length } // 2. for( const i in json) { let item = json[i] for( j in item) { // 得到月份作为label let month = item.monthData[j].key // 设置label的prop let prop = p+i // 表数据 let monthValue = item.monthData[j].value // 在最大值时添加label到element UI table组件Label中 if ( item.monthData === maxLength ) { let labelItem = { prop:prop, label:month , //表头 width:180, slot:true //由于之后要跳转 } this.slotList.push(prop) // 为之后循环slot做准备 list.push(labelItem) } // 设置表单每行数据 如 p0:12, p1:13, p2:14 json[i][prop] = monthValue } } // 拼接表格label 这里的tableLabel 写成自己的表格的label this.tableLabel = this.tableLabel.concat(list)
动态slot跳转 在element ui 中用的table 是 el-common-table 组件
// element ui 我在这就省略了表格的属性 加你自己的属性 <el-common-table > <div v-for="(item, index) in slotList" slot-scope = "scope" :key="index" :slot="item"> <!-- 跳转方法 以及值 --> <span @click ="toPage(scope, row) "> { { scope.row[item] }} </span> </div> </el-common-table >
(Emiited value instead of an instance of Error) Ambiguous combined usage of slot-scope and v-for on <div>(v-for takes higer priority)
这样写终端会报错但页面能正常加载。强迫症的我受不了这样!!!经过测试 以下为解决方法。
解决方法: ***
<el-common-table > <template v-for="(item, index) in slotList" slot-scope = "scope" :slot="item"> <!-- 跳转方法 以及值 --> <span :key="index" @click ="toPage(scope, row) "> { { scope.row[item]}} </span> </template> </el-common-table >
欢迎各位大佬指正,讨论,交流
上一篇:
IDEA上Java项目控制台中文乱码