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使用append(content)方法注意事项分享
Jan 06 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
简介JavaScript中Boolean.toSource()方法的使用
Jun 05 Javascript
js控制TR的显示隐藏
Mar 04 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
Aug 31 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
Feb 12 Javascript
react-router中的属性详解
Jun 01 Javascript
Vue.js进行查询操作的实例详解
Aug 25 Javascript
node.js 用socket实现聊天的示例代码
Oct 17 Javascript
vue.js $refs和$emit 父子组件交互的方法
Dec 20 Javascript
浅谈vue父子组件怎么传值
Jul 21 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
在vue项目中使用sass的配置方法
2018/03/20 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
python3.7 sys模块的具体使用
2019/07/22 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
Python中生成ndarray实例讲解
2021/02/22 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
override和overload的区别
2016/03/09 面试题
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
皮肤科医师岗位职责
2013/12/04 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
会计师事务所实习证明
2014/11/16 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis