21年前端总结
Bug
1、form表单视图不更新
主要是老忘记使用$set
设置对象的值,破坏了vue的动态响应
2、element的table组件自定义表头使用了表单元素,但是视图不更新
加上作用域插槽
3、元素鼠标悬浮多了莫名其妙的提示框
使用v-bind="$attrs"
在不知情的情况下绑定了title到元素
4、beforeRouteEnter的使用
注意在次钩子函数中this不能使用,可以通过next((vm)=>{})
获得当前的vue实例
5、$slots
,$listener
,$attrs
,$props
6、jquery计算隐藏元素的宽高会出错
7、activated
钩子函数会在mounted之后执行
8、beforeDestroy
中清除定时器
9、原生DOM操作
要放在nextTick
中执行
10、echarts
的数据集
不能使用,发现是datasetComponent
没有按需引用
11、通过this.$refs['comp']
修改的子组件data数据似乎不能被watch监视
12、el-table
的fixed列
加上宽度,不然视图有时候异常
13、IE10 echarts 的颜色如果有alpha通道就渲染为黑色了,鼠标移上去才变正常
14、echarts IE10 下载报异常
1 | // 异常文件 |
15、请求时时间传参错误
当用new Date()
或者 el-date-picker
未格式化时间得到的本地时间Fri Nov 19 2021 17:07:41 GMT+0800 (GMT+08:00)
直接当作参数通过axios发送时,时间会被置为格林威治时间。所以,所有的时间都要格式化为字符串,或者时间戳
开发
1、echarts如何修改默认颜色
1、 \node_modules\echarts\lib\model\globalDefault.js 修改其中的color
2、主题定制
2、echarts自定义toolbox并保存图片
1 | // 必须以 my 开头 |
3. 使用单个el-tooltip根据文字是否溢出,动态显示
- template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<template>
<div>
<ul>
<li
v-for="(item,key) in 10"
@mouseenter.native="handleMouseEnter"
@mouseleave.native="handleCellMouseLeave">
<span class="cell">{{item}}</span>
</li>
</ul>
<el-tooltip
ref="tooltip"
:content="tooltipContent"
placement="top"
effect="light"
></el-tooltip>
</div>
</template> - script
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
32
33
34
35
36
37
38
39
40activateTooltip = _.debounce((tooltip) => tooltip.handleShowPopper(), 50)
handleMouseEnter(event) {
const cell = event.target
const cellChild = event.target.querySelector('.cell')
if (cell) {
// 获得文字部分的宽度
const range = document.createRange()
range.setStart(cellChild, 0)
range.setEnd(cellChild, cellChild.childNodes.length)
const rangeWidth = range.getBoundingClientRect().width
const padding =
parseInt(window.getComputedStyle(cellChild).paddingLeft || 0) +
parseInt(window.getComputedStyle(cellChild).paddingRight || 0)
// 如果溢出
if (
(rangeWidth + padding > cell.offsetWidth || cellChild.scrollWidth > cell.offsetWidth) &&
this.$refs.tooltip
) {
const tooltip = this.$refs.tooltip
// 改变el-tooltip的显示内容
this.tooltipContent = cellChild.innerText || cellChild.textContent
// 改变el-tooltip的关联元素
tooltip.referenceElm = cell
// 将之前的销毁重新展示新的
tooltip.$refs.popper && (tooltip.$refs.popper.style.display = 'none')
tooltip.doDestroy()
tooltip.setExpectedState(true)
this.activateTooltip(tooltip)
}
}
},
// 鼠标移出
handleCellMouseLeave(event) {
const tooltip = this.$refs.tooltip
if (tooltip) {
tooltip.setExpectedState(false)
tooltip.handleClosePopper()
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 May!
评论