美文网首页
2020-02-26

2020-02-26

作者: 俊_dad9 | 来源:发表于2020-02-26 16:06 被阅读0次

    列筛选组件使用指南

    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>
    

    相关文章

      网友评论

          本文标题:2020-02-26

          本文链接:https://www.haomeiwen.com/subject/ubdbchtx.html