Vue使用Vxe-table组件,动态设置table表头过滤信息:filters

组件官网: vxe-table v4

通常情况下,表头的这些过滤备选信息我们是直接在页面里面写死的. 

比如下图

<vxe-table-column
            v-if="columns.visible('createType')"
            width="120"
            field="createType"
            :filters="[{label: '导入', value: 1}, {label: '手录', value: 2}]"
            :filter-multiple="false"
            sortable
            show-overflow="ellipsis"
            show-header-overflow
            title="创建方式" >

或者将数据数组放在data中, 然后:filters 绑定下命名


问: 如何让这个过滤列表内容为我们从后台获取到的内容?

尝试: 将filters绑定一个数组,然后在获取数据的接口回调里面,修改数组内容, 结果数组内容变更之后, 页面表头过滤内容并不刷新: 

:filters="typeArr"

data(){
    return {
      typeArr : []
    }
}

methods: {
     getTypeEnum(){
      publicApi('CreateTypeEnum').then((res) => {
       // 期望数据格式[{label: '导入', value: 1}, {label: '手录', value: 2}],
       /* 接口返回的[
        {
            "code": "1",
            "name": "手输",
            "key": 1
        },
        {
            "code": "2",
            "name": "导入",
            "key": 2
        },
        {
            "code": "3",
            "name": "系统同步",
            "key": 3
        }
      ]*/
      res.forEach((type) => {
         this.typeArr.push({label: type.name, value: type.code})
       })
     })
    },
}

两种实现方式: 

1: 加工完数据之后, 代码里面找到该子段的filters并赋值. 可能存在问题, 根据索引取字段不太靠谱,后面如果页面字段调整也需要跟着调整

res.forEach((type) => {
  this.typeArr.push({label: type.name, value: type.code})
})
this.$refs.table.collectColumn[19].filters = this.typeArr;

 2: 将列v-if设置成数组的长度.   问题: 如果数组数据为空会导致该字段不显示 哈哈.

<vxe-table-column
            v-if="typeArr.length"/>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
vxe-tablevxe-column是基于Vue.js的表格组件,可以实现多级表头。下面是一个示例代码,演示了如何使用vxe-tablevxe-column实现多级表头: ```vue <template> <vxe-table :data="tableData" border show-header> <vxe-column type="index" title="序号"></vxe-column> <vxe-column title="基本信息"> <vxe-column title="姓名" field="name"></vxe-column> <vxe-column title="年龄" field="age"></vxe-column> </vxe-column> <vxe-column title="联系方式"> <vxe-column title="电话" field="phone"></vxe-column> <vxe-column title="邮箱" field="email"></vxe-column> </vxe-column> <vxe-column title="操作"> <vxe-column title="编辑" :render-header="renderEditHeader"></vxe-column> <vxe-column title="删除" :render-header="renderDeleteHeader"></vxe-column> </vxe-column> </vxe-table> </template> <script> import 'vxe-table/lib/style.css'; import { VXETable } from 'vxe-table'; export default { data() { return { tableData: [ { name: '张三', age: 20, phone: '123456789', email: '[email protected]' }, { name: '李四', age: 25, phone: '987654321', email: '[email protected]' }, ], }; }, methods: { renderEditHeader({ column }) { return <span>{column.title}(编辑)</span>; }, renderDeleteHeader({ column }) { return <span>{column.title}(删除)</span>; }, }, mounted() { VXETable.setup({ size: 'mini', }); }, }; </script> ``` 在上面的代码中,我们使用vxe-tablevxe-column组件来创建一个表格。通过嵌套vxe-column组件,我们可以实现多级表头。每个vxe-column组件都代表一个表头列,可以设置title属性来定义列的标题,field属性来指定列对应的数据字段。 在示例中,我们创建了一个基本的表格,包含了基本信息和联系方式两个多级表头。每个表头列都可以自定义渲染,通过render-header属性来指定渲染函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值