com组件 安全提示_吐血整理拖拽组件总结

预计可能会碰到一系列问题

  1. el-table el-table-column type=’selection’选中高亮问题
  2. 表格行拖拽高亮问题
  3. 拖拽时如何获取当前拖拽行数据问题
  4. 数据回填问题
  5. 数据清除问题
  6. 数据超出显示提示问题
  7. 如何去掉高亮行

预计可以解决以上问题的方案

  1. el-table-column type=”selection” select 方法 当用户手动勾选数据行 checkbox 触发
  2. select-all 当用户手动勾选 checkbox 时触发事件
  3. selection-change 当选择项发生改变时触发
  4. clearSelection 用于多选表格,清空用户选择
  5. toggleRowSelection 用于多选表格,切换问题
  6. toggleAllSelection 用于多选表格,切换选中所有
  7. setCurrentRow 可以解决高亮行问题
  8. show-overflow-tooltip 可以解决内容超长隐藏提示问题
  9. highlight-current-row 可以去掉高亮行

给我启发的博客网站

  1. https://github.com/SortableJS/Sortable
  2. https://zhuanlan.zhihu.com/p/83861012
  3. https://blog.csdn.net/qq_26440803/article/details/83663511
  4. https://blog.csdn.net/weixin_41646804/article/details/80535874
  5. https://segmentfault.com/a/1190000012811776
  6. https://segmentfault.com/a/1190000009256495

npm 镜像设置问题

  1. npm config set registry https://registry.npm.taobao.org
  2. npm config get registry
  3. npm info express

选择原生拖拽 html5 drag drop

  1. 原因是比较可控
  2. Sortablejs 目前可能会有些问题
  3. Dragstart
  4. Drag
  5. Dragend
  6. Dragenter
  7. Dragleave
  8. Dragover
  9. Drop
  10. e.dataTransfer.set()
  11. e.dataTransfer.get()
  12. Draggable=true

数据请求 v-if=ufd.isInit与 mounted()

  1. 数据请求未成功时,mounted已经执行了,会导致 this.$refs.dragTable 未 undefined

0a676e098c385eef3adb354724fbb03d.png

965f50354ea77610a804b6c81d81cf22.png

Scoped scss ::v-deep 样式穿透问题

40df104b7277a178aeeb9684ca5336b7.png

element-vue中el-table去除鼠标悬停背景色

e2bfce920610e3977f36b848a7c596a3.png

elementUI的table组件中选中/取消后,高亮显示选中的行

9dabb46f948f17ee001d78e4ebd0d380.png

d77bb51e366e323d873cd8c970fced95.png

html5 ondrop 事件不执行问题

在html5 中,遇到 ondrop 事件不执行,可能原因是浏览器的默认行为,需要阻止浏览器的默认行为

4fbd3092735075cb880d97ad9795826e.png

html5 dragend 事件好像无法获取到 e.dataTransfer.getData() 的内容

88a525752137d7ff276fc973ae544f75.png

3cf58897ef2c026c530b9ab0f147598e.png

不同组件通讯方式

因为 drop 事件处于 目标元,而 dragstart 是处于 拖拽源,所以需要通信

  1. Vuex 保存状态
  2. 使用模块化的方式来管理每个模块,或者子项目各自的 store, 汇总到 new Vuex.Store()

d03c6ee7c2bf2ea4409a52d0f3c5552a.png

3b8209b4eb4dadbf0537b700c5a79f0e.png

b44da213e45f0e00e1537bd005c6620e.png

但是如果是这样的话,那会碰到一个问题就是,页面刷新的时候,状态会消失的,可能需要借助浏览器本地缓存来解决这个问题

vm.$props 使用

f15d34b03688f3f6d99c9befe47e9d88.png

this.$refs.dragTable.toggleRowSelection(item, true)的使用,解决数据回填问题

43b72b65f03e839cb4cfad08febc87ef.png

别的地方需要调用组件的方法需要使用 ref

  1. 数据放置表示为 true
  2. 数据删除表示为 false

1b7892d2169bb61d00c27054c0645ef1.png

如何调用组件内部的方法

  1. https://juejin.im/post/5cde0b43f265da03867e78d3
  2. https://www.zoo.team/article/vue-communication
  3. Prop/$emit 父组件---->子组件(props)子组件---->父组件($emit)
  4. $emit/$on const Event = new Vue() 公共的 bus 事件
  5. Vuex 状态管理
  6. $attrs/$listeners
  7. Provider/inject 父组件通过 provider 传入变量,任意组件子孙组件通过 inject 来拿到变量
  8. $parent/$children / $refs

08c47797be6aa79921cde0f7bf784477.png

nth-child 的使用

  1. https://www.w3h5.com/post/101.html
  2. :first-child 选中列表第一个标签
  3. :last-child 选中列表第二个标签
  4. Nth-child(3) 选中列表中第几个标签
  5. Nth-child(odd) 选中列表奇数标签
  6. Nth-child(even) 选中列表偶数标签
  7. Nth-child(n+1) 选中标签中奇数行
  8. Nth-child(2n-1) 选中标签中奇数行
  9. Nth-child(2n) 选中偶数行
  10. Nth-child(-n+3)
  11. Nth-child(n+5)
  12. Nth-last-child(n)
  13. Nth-last-child(n+3)
  14. Nth-last-child(3n)

Css 如何排除第一个元素的其他元素的4种方式

  1. https://www.cnblogs.com/CatcherLJ/p/11174450.html
  2. :not(:first-child) {} 匹配的是该父级元素结构下的非第一个子元素
  3. :not(:first-of-type) {} 匹配的是该父级元素下某个元素类型是第一个元素

需要有过期字段标志?

选中数据回填的时候需要根据什么去匹配?

如何解决

如何使用 entries(), values(), keys()

  1. https://segmentfault.com/a/1190000011616239
  2. https://blog.csdn.net/qq_42767631/article/details/84976654
  3. https://blog.csdn.net/GXing007/article/details/79499113

c4b66c65d51bf496a65950fbd4231b2f.png

Table 滚动加载

  1. 防抖函数,防止频繁触发

4b0b813e5c44a208495ef412dcf2fd06.png
  1. 触发竖向滚动加载 需要配合 height 属性

8deeee622826b33ff7654dbd80904634.png
  1. resize 函数

9f5b43d739f06e4088ef6d757a9d406a.png

去掉el-table 表头会报错问题

  1. show-header=’false’ 报错问题

dc18e33a05faa8e2b111cac16456ecf5.png
  1. 解决方案是调用 table 表格的 doLayout()方法

416906bb4168ad0e6343d0e0aafc3f5a.png
  1. height=200 和 :show-header=”false” 同时出现会报错
  2. https://github.com/ElemeFE/element/issues/17367

107a3df3ac234bd9c91c4044d65027d5.png

b4f0791b1d177c7e117837adf0155170.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值