1.需求:
用户拖动表格的表头可以拖动宽度,并且记住拖动的宽度。
2.逻辑思路
基本这种功能都是前端进行实现的,那么就需要利用localStroage的功能进行存储到本地,然后页面进行刷新的时候就会调用created,并设置上宽度就可以。
3.实现
在表格设置函数
打印出的属性,会有拖动的宽度,还有你设置列的名字
现在data函数里面定义一个枚举值,有多少列就对应多少条,prop跟 el-table-column里面设置prop的值一样,这里设枚举值的原因是,跟拖动的函数做匹配,并存储宽度。
当你拖动的时候就会存储到本地,这时候已经看到了width里面存储的对应列的宽度
当刷新页面的时候,或者页面切换的时候就会重新调用生命周期的函数
在created里面调用设置宽度的函数
当localstorage有数据的时候就会给tableColumnList进行赋值,此时width就会有拖动设置的值。
最后一步:
根据自己的需求来
第一种:把在data里面设置的枚举值的list多加上label和prop的属性
利用v-for循环出来,这种方式也可以
但是遇到复杂的列表处理的时候,比如说后端返回一些code,前端需要做判断状态,改变数据的时候,这种方式就比较的难处理,没法在一个el-table-column里面进行其他的判断。
所以我想了一种简单的方式。虽然代码比较的冗余
第二种:
还是按照之前的写法,每一个都单独处理,在里面进行code的处理,但是width的设置是利用tableColumnWidth[0].width的方式进行设置的,这样的就可以解决这个问题了
但是,请注意,按照以上的写法没有作用的话,那么请看看代码,多打印log,比如宽度有没有设置上,本地有没有存储上。
根据各自的业务进行具体化的逻辑更改。
好啦,今天就分享到这里了,如果大家有更好的方法,欢迎大家进行交流。谢谢