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 相关文章推荐
jQuery 使用手册(六)
Sep 23 Javascript
javascript suggest效果 自动完成实现代码分享
Feb 17 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
js捕获鼠标滚轮事件代码
Dec 16 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
功能强大的Bootstrap组件(结合js)
Aug 03 Javascript
Validform表单验证总结篇
Oct 31 Javascript
简单实现js上传文件功能
Aug 21 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
Nov 05 Javascript
Vue组件跨层级获取组件操作
Jul 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
PHP经典的给图片加水印程序
2006/12/06 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
使用Apache的rewrite
2021/03/09 Servers
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
浅析javascript 定时器
2014/12/23 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
js实现三角形粒子运动
2020/09/22 Javascript
python合并文本文件示例
2014/02/07 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
详解Django中间件执行顺序
2018/07/16 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python线程的几种创建方式详解
2019/08/29 Python
python 发送json数据操作实例分析
2019/10/15 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
python怎么自定义捕获错误
2020/06/29 Python
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
专科毕业生求职简历的自我评价
2013/10/12 职场文书
消防安全责任书范本
2014/04/15 职场文书
大学专科求职信
2014/07/02 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书