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 相关文章推荐
响应鼠标变换表格背景或者颜色的代码
Mar 30 Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 Javascript
js中string转int把String类型转化成int类型
Aug 13 Javascript
js数组的操作指南
Dec 28 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
使用webpack打包koa2 框架app
Feb 02 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
Element输入框带历史查询记录的实现示例
Jan 15 Javascript
js实现计算器功能
Aug 10 Javascript
Swiper实现导航栏滚动效果
Oct 16 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 &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
python区分不同数据类型的方法
2019/10/14 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
2019年Java面试必问之经典试题
2012/09/12 面试题
国际商务专业学生个人的自我评价
2013/09/28 职场文书
平面设计师的工作职责
2013/11/21 职场文书
文案策划求职信
2014/04/14 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
给老师的一封感谢信
2015/01/20 职场文书
公司备用金管理制度
2015/08/04 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js