2020-02-26

列筛选组件使用指南

  1. 拷贝 组件模块(ColumnFilter), 注册为全局组件

  2. 拷贝 mixin(columnFilter.js)导入到 mixin 主文件

  3. 拷贝 列筛选按钮代码

<i
  @click="columnHandler"
  class="el-icon-setting column-btn"
  title="筛选列"
  v-if="columnFilterBoolean"
></i>
  1. 拷贝 类筛选组件代码
<column-filter
  v-if="columnFilterShow"
  :data="columnData"
  @close="columnFilterClose"
  @columnCheckboxChange="columnCheckboxChange"
/>
  1. 从 mixins 主文件,导入 columnFilter.js 文件
import { columnFilter } from '@/mixins/index'
  1. 在 mounted 钩子里获取列筛选原始数据
// 获取表格列数据(对原始数据做一份克隆,防止循环引用)
this.getColumnOriginData(_.cloneDeep(this.$refs.formTable.columns))

tips:formTable 是你页面了 table 的 ref 名称

  1. 如果你的 el-table-column 是 for 循环出来的则调用列筛选组件的回调方法即可
columnCheckboxChange(curColumns) {
  // columnsOrigin是你定义的列数据源[{prop: 'test', label=‘测试’}, {prop: 'test2', label=‘测试2’},]
   this.columnsOriginData = columnsOriginData.filter(item => {
     const flag = curColumns.find(cell => {
       return item.prop === cell.property && cell.checked
     })
     return flag
   })
   // 修复部分版本element-ui表格高度塌陷问题
    this.$nextTick(_ => {
      this.$refs.formTable.doLayout()
    })
 }
  1. 如果你的 el-table-column 是一个一个手写的则添加 v-if 属性,调用 checkColumn 方法传入 prop 值
<el-table-column
  label="测试"
  prop="test"
  v-if="checkColumn('test')"
></el-table-column>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、vue的生命周期是什么 vue每个组件都是独立的,每个组件都有一个属于它的生命周期,从一个组件创建、数据...
    奔跑吧兄弟_凯凯阅读 1,150评论 0 0
  • SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解S...
    __method__阅读 195评论 0 0
  • 元数据 元数据是存储在‘基表’中。 通过专用的ddl语句,dcl语句进行修改 通过专用的视图和命令进行元数据的查询...
    桑正阅读 157评论 0 0
  • 问题描述URL 映射是诸如 Django、Ruby on Rails 等网页框架 (web frameworks)...
    V_6619阅读 323评论 2 1
  • 如果身边的人都对你关上了门,那么,很可能是因为自己的心里从来没有容纳过其他人, 不要因为自己的看似付出,来道德绑架...
    凯瑟琳G阅读 196评论 0 0