随笔 - 47,  文章 - 1,  评论 - 2,  阅读 - 51381

应用场景描述:某个列表是动态列表,从接口拿到表头数据通过每个表头元素的属性值isShow控制列的显示与隐藏,通过sortable拖动排序表头。
控制列的显示与隐藏通过过滤出isShow为true就可以实现,从props中拿到的headList.filter(item=>item.isShow)即可,表格数据改变且视图成功渲染;
表头拖动排序这个有个难点是el-table表头数据改变了,数据排列也都正确从小到大,可以成功打印出正确的排序结果,也成功赋值给表头数据用于循环渲染出列,但实际上视图并没有发生改变,手动刷新之后视图才变化。解决这个问题的方式如下:

给列表增加一个属性key,然后每次增加一即可刷新视图:

 

 为什么不直接用this.$set()、this.$forceUpdate()、this.$nextTick()这些呢。

例如使用this.$nextTick():

this.headList=[];
this.$nextTick(()=>{
  this.headList=resArr;//resArr是表头数据
})

这样可以使得视图刷新,不过表格会有个闪动或跳动抖动的效果,没有直接用key来实现的那么顺滑哈哈哈(需求如此,不希望有抖动效果)。

 花了大半天处理了一个bug,而且处理方法还是之前用过的但不记得了,特此记录下来。

 

posted on   bro阿柒  阅读(264)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示