Vue+Element ui 根据后台返回数据设置动态表头操作


Posted in Javascript onSeptember 21, 2020

Vue+Element ui 根据后台返回数据设置动态表头操作

由于后端是多人开发,也没有规范数据格式,所有页面是我一个人开发,所以就会遇到同样的页面不同的返回数据格式问题。

一、根据element文档,利用prop属性绑定对应值,label绑定表头。

html

<el-table class="tb-edit" highlight-current-row :data="tableData" border style="width: 100%">         
 <template v-for="(col,index) in cols">          
 <el-table-column :prop="col.prop" :label="col.label"></el-table-column>        
 </template>       
</el-table>

返回的数据类型

data(): {
  return: {
    cols:[
      {prop: "327", label: "护士"}, 
      {prop: "328", label: "护理员组长"},
      {prop: "329", label: "护理员"},
      {prop: "330", label: "输单员"}
   ],
   tableData:[
     {327: "24", 328: "20", 329: "18", 330: "2"},
     {327: "22", 328: "20", 329: "18", 330: "2"},
     {327: "22", 328: "20", 329: "18", 330: "2"},
     {327: "51", 328: "21", 329: "20", 330: "6"},
     {327: "21", 328: "20", 329: "18", 330: "2"},
   ]
  }
}

二、返回的数据都是数组形式,值与表头按照数组下标相对应。

html

<el-table :data="table_content" border>        
 <el-table-column :label="val" v-for="(val, i) in table_head" :key="i">           
 <template slot-scope="scope">{{table_content[scope.$index][i]}}</template>        
 </el-table-column>       
</el-table>

返回的数据类型

data(): {
 return: {
 // 表头数据
 table_head:["护士", "护理员组长", "护理员", "输单员"],
 // 表格内容数据
 table_content:[
   ["24", "20", "18", "2"], 
   ["22", "20", "18", "2"],
   ["22", "20", "18", "2"],
   ["51", "21", "20", "6"],
   ["21", "20", "18", "2"],
 ],
 
 }
}

补充知识:element-ui table 表头filter 使用实现重新向后台获取数据

描述:当我们在使用element-ui的时候,常常用到表格,有表格就会有筛选。

这个时候往往会在表格上方使用筛选机的方式来实现筛选

Vue+Element ui 根据后台返回数据设置动态表头操作

像这样,但是一旦筛选条件增多,这个筛选机就会越来越长。这一点都不酷。

所以这边使用element提供的filters功能。

看了一下往上都说只能对已经有的数据进行筛选,不能后台筛选。

???不分页的数据到无所谓,我一个分页的数据,一页10条,难不成前端筛选第一页显示3条,第二页显示5条??

excuse me?

上代码

<template>
 <el-table
  ref="filterTable"
  :data="tableData"
  @filter-change="fnFilterChangeInit"
  style="width: 100%">
  <el-table-column
   prop="name"
   label="姓名"
   width="180">
  </el-table-column>
  <el-table-column
   prop="address"
   label="地址"
   :formatter="formatter">
  </el-table-column>
  <el-table-column
   prop="tag"
   label="标签"
   width="100"
   :filters="[{ text: '家', value: '家' }, { text: '公司', value: '公司' }]"
   :filter-method="filterTag"
   column-key="tag"
   filter-placement="bottom-end">
   <template slot-scope="scope">
    <el-tag
     :type="scope.row.tag === '家' ? 'primary' : 'success'"
     disable-transitions>{{scope.row.tag}}</el-tag>
   </template>
  </el-table-column>
 </el-table>
</template>
 
<script>
 export default {
  data() {
   return {
    tableData: [],
    options:{
      tag: undefined
    }
   }
  },
  methods: {
   // 这里使用一个init的方法来模拟异步获取数据懂这个意思就好
   // 假装接受options作为筛选条件
   init(options){
    this.tableData = [{
     date: '2016-05-02',
     name: '王小虎',
     address: '上海市普陀区金沙江路 1518 弄',
     tag: '家'
    }, {
     date: '2016-05-04',
     name: '王小虎',
     address: '上海市普陀区金沙江路 1517 弄',
     tag: '公司'
    }, {
     date: '2016-05-01',
     name: '王小虎',
     address: '上海市普陀区金沙江路 1519 弄',
     tag: '家'
    }, {
     date: '2016-05-03',
     name: '王小虎',
     address: '上海市普陀区金沙江路 1516 弄',
     tag: '公司'
    }]
   },
   // table column 的方法,改写这个方法
   filterTag(value, row, column) {
    return true
   },
   // table 的方法
   // filter 的格式 obj { column-key: Array }
   // Array[0] 筛选的值 
   fnFilterChangeInit(filter){
     // do something
     // example 这里最好用if,没有if可以试试也许有奇迹
     if(filter.tag){
      // 为什么这么处理 怕有些同学把undefined当一个字符串传给后台
      this.options.tag = filter.tag[0] == undefined ? '':filter.tag[0]
     }
     this.init(this.options)
   }
  }
 }
</script>

以上这篇Vue+Element ui 根据后台返回数据设置动态表头操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript之更有效率的字符串替换
Aug 02 Javascript
JavaScript 计算当天是本年本月的第几周
Mar 22 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
jQuery动态星级评分效果实现方法
Aug 06 Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
详解JavaScript中的坐标和距离
May 27 Javascript
JS实现小米轮播图
Sep 21 #Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 #Javascript
vue组件入门知识全梳理
Sep 21 #Javascript
Ajax获取node服务器数据的完整步骤
Sep 20 #Javascript
微信小程序获取当前时间及星期几的实例代码
Sep 20 #Javascript
vue操作dom元素的3种方法示例
Sep 20 #Javascript
npm ci命令的基本使用方法
Sep 20 #Javascript
You might like
discuz目录文件资料汇总
2014/12/30 PHP
php中的观察者模式简单实例
2015/01/20 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
php报错502badgateway解决方法
2019/10/11 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Python2.7 实现引入自己写的类方法
2018/04/29 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
高中体育教学反思
2014/01/24 职场文书
大专学生求职信
2014/07/04 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
质量月活动总结
2014/08/26 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
Python 视频画质增强
2022/04/28 Python