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 相关文章推荐
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
jQuery使用cookie与json简单实现购物车功能
Apr 15 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
微信小程序icon组件使用详解
Jan 31 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
基于JavaScript实现一个简单的Vue
Sep 26 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
微信小程序实现工作时间段选择
Feb 15 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
Aug 10 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
PHP原理之异常机制深入分析
2010/08/08 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
php通过字符串调用函数示例
2014/03/02 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
JS实现百度搜索框
2021/02/25 Javascript
python读写ini配置文件方法实例分析
2015/06/30 Python
python处理html转义字符的方法详解
2016/07/01 Python
python模块smtplib学习
2018/05/22 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python sep参数使用方法详解
2020/02/12 Python
pygame实现弹球游戏
2020/04/14 Python
简单说下OSPF的操作过程
2014/08/13 面试题
优秀少先队员事迹材料
2014/12/24 职场文书
详解Redis复制原理
2021/06/04 Redis
关于Vue中的options选项
2022/03/22 Vue.js