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中几种常见排序算法小结
Feb 22 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
jQuery获取标签文本内容和html内容的方法
Mar 27 Javascript
javascript实现3D切换焦点图
Oct 16 Javascript
微信开发 js实现tabs选项卡效果
Oct 28 Javascript
JavaScript 控制字体大小设置的方法
Nov 23 Javascript
使用vue.js写一个tab选项卡效果
Mar 25 Javascript
结合mint-ui移动端下拉加载实践方法总结
Nov 08 Javascript
使用webpack3.0配置webpack-dev-server教程
May 29 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
Sep 16 Javascript
JavaScript中10个Reduce常用场景技巧
Jun 21 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
虫族 ZERG 概述
2020/03/14 星际争霸
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
python 排列组合之itertools
2013/03/20 Python
python通过post提交数据的方法
2015/05/06 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python生成带有表格的图片实例
2019/02/03 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
pycharm安装及如何导入numpy
2020/04/03 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
社区中秋节活动方案
2014/01/29 职场文书
农村党员对照检查材料
2014/09/24 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android