elementui 动态表头

本文分享了使用ElementUI实现动态表头功能的开发过程。通过理解`:option`属性绑定列表表格模板,并在Vue的生命周期`create`阶段动态添加列对象至`column`数组,完成页面渲染前的数据准备。然而,对于动态列的搜索功能,作者尚未找到理想解决方案,期待读者交流探讨。

最近,在用elementui做一个动态表头的功能,把自己开发的流程大概分享一下。

首先,我们得了解这个option的作用:

这个:option属性就是绑定我们列表表格的模板。通过引入我们写好的js文件来构成一个表格。

这个js文件我也贴一部分代码出来介绍一下

可以看出来,这个column就是我们的列数组。那么,做法上大体上就确定了,把动态的列对象加入到这个column数组即可。

那么,什么时候加入呢?当然是要在页面渲染之前加入啦,这个时候就要介绍一下vue的生命周期函数,也叫钩子函数。

先随便贴个图。。。这个是官方给的图

clipboard.png

可以看到,是在create方法初始化data,计算数值,但是dom还没有构建,我们可以在这个时候把动态列对象加入到里边去,这样子,他到时候请求数据的时候会直接赋值。

下面我就放我一段获取自定义列的方法,写得很普通,大家看看就好。

//获取自定义字段
getCusList() {
  var that = this;
  that.tableOption = this.oldTableOption;
  if (that.tableOption.column.length == 9) {
    getMuList(0).then(response => {
      that.customerList = response.data.data;
      if (response.data.data) {
        for (const temp of response.data.data) {
          temp.value = temp.selectValue.split(",");
          that._data[temp.key] = '';
          that.customList.push(temp)
          var temp2 = {}
          if (temp.filedType == '0') {
            if (temp.isSearch == '0') {
              temp2 = {
                type: 'input',
                label: temp.filedName,
                prop: temp.key,
                search: true
              };
            } else {
              temp2 = {
                type: 'input',
                label: temp.filedName,
                prop: temp.key
              };
            }

          } else if (temp.filedType == '1') {
            var selectData = [];
            for (var i = 0; i < temp.value.length; i++) {
              selectData.push({
                label: temp.value[i],
                value: temp.value[i]
              })
            }
            if (temp.isSearch == '0') {
              temp2 = {
                type: 'select',
                label: temp.filedName,
                prop: temp.key,
                search: true,
                dicData: selectData
              };
            } else {
              temp2 = {
                type: 'select',
                label: temp.filedName,
                prop: temp.key,
                dicData: selectData
              };
            }

          } else if (temp.filedType == '2') {
            var selectData = [];
            for (var i = 0; i < temp.value.length; i++) {
              selectData.push({
                label: temp.value[i],
                value: temp.value[i]
              })
            }
            if (temp.isSearch == '0') {
              temp2 = {
                type: 'select',
                searchMultiple: true,
                label: temp.filedName,
                prop: temp.key,
                search: true,
                dicData: selectData
              };
            } else {
              temp2 = {
                type: 'select',
                searchMultiple: true,
                label: temp.filedName,
                prop: temp.key,
                dicData: selectData
              };
            }

          } else if (temp.filedType == '3') {
            if (temp.isSearch == '0') {
              temp2 = {
                type: 'date',
                label: temp.filedName,
                prop: temp.key,
                search: true
              };
            } else {
              temp2 = {
                type: 'date',
                label: temp.filedName,
                prop: temp.key
              };
            }
          } else {
            if (temp.isSearch == '0') {
              temp2 = {
                type: 'datetimerange',
                label: temp.filedName,
                prop: temp.key,
                search: true,
                searchRange: true,
              };
            } else {
              temp2 = {
                type: 'datetimerange',
                label: temp.filedName,
                prop: temp.key,
                searchRange: true
              };
            }
          }
          console.log(temp2)
          tableOption.column.push(
            temp2
          )
        }
      }
    })
  }
}

总的来说,自定义列感觉用elementui来做并不是很难,但是还有一个问题,就是自定义列的搜索功能。这个功能至今我还没有一个比较好的解决方法。。。如果有大神看到的话,可以指导一下吗?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值