跟大家分享下平时遇到的小问题,多方面的,我会持续更新,每次更新,我会在评论区做记录,也欢迎大家跟我分享你们的一些小问题以及解决方法
1.CSS hover 隐藏与显示时老是闪烁问题
遇到这种问题可以把display:none换成opacity: 0
display:none元素会变为不可交互,hover效果会消除。
2.把A数组的值赋值给B数组,改B数组,A数组也跟着变化
因为数组是引用类型,赋值的时候借用JSON对象的parse和stringify深拷贝,B = JSON.parse(JSON.stringify(A));
3.启动vue项目自动在浏览器打开
找到文件目录在目录config/index.js 找到配置项autoOpenBrowser 设置为true就可以了
4.最新兼容电信199移动198联通166手机号的正则
比如要验证存储手机号变量mobile
check=mobile.match(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$|^([0-9]{3,4}-)?[0-9]{7,8}$/);
通过check值来判断用户输入的手机号知否正确
5.关于ElementUI中this.$refs[formName].resetFields();无法重置表单问题
使用这个方法成功的关键在于
1.$refs选取ref="Form"的DOM节点
2.重置表单的位置要有prop绑定的data数据才行
但是我有遇到在满足了这些条件后,还是无法重置表单
查了下官方文档,会将所有字段重置为初始值,所以这里必须保证所有字段的初始值为空,而我为了记录操作,有把表单的值保存在缓存中,所以每次返回回来的时候,表单字段的初始值不再为空了
这是可以在重置操作中增加nextTick()将表单字段赋值为空,在进行重置表单操作
//重置表单
resetForm(formName) {
this.$nextTick(() => {
this.searchForm={
name:'',//客户姓名
}//查询表单
})
this.$refs[formName].resetFields();
},
6.for循环中使用splice可能会遇到的坑
我也是偶然用到这里发现的,也给大家提个醒,需求是把dealList里面的list里面的status 不等于3的数据删除,方法如下
for(let i=0;i<this.dealList.length;i++){
for(let j=0;j<this.dealList[i].list.length;j++){
if(this.dealList[i].list[j].status !=3){
this.dealList[i].list.splice(j,1);
}
}
}
我发现这样写了之后,还是有数据没删除,后来发现是因为,每次删除后会影响到下次循环的j的值
解决办法:改一下循环变量的值就行了
for(let i=0;i<this.dealList.length;i++){
for(let j=0;j<this.dealList[i].list.length;j++){
if(this.dealList[i].list[j].status !=3){
this.dealList[i].list.splice(j,1);
j=j-1;
}
}
}
或者干脆直接 this.dealList[i].list.splice(j--,1);(j--也就是把j的值先取出来运算,再改变这个值的大小。)
7.git add . 提交代码时报错warning: LF will be replaced by CRLF in ××××××
今天提交代码时报错warning: LF will be replaced by CRLF in public/index.html. The file will hav......
解决方法:git config --global core.autocrlf false
原因:路径中存在 / 的符号转义问题,false就是不转换符号默认是true,相当于把路径的 / 符号进行转义,如果这样添加就会出现问题
(查找资料时发现有篇文章讲的很详细,可以参考下)
8.关于ElementUI中下拉菜单组件Dropdown的点击事件无效
<el-dropdown split-button type="primary" size="small">
操作
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click="handlePreview(scope.$index, scope.row)">预览</el-dropdown-item>
<el-dropdown-item @click="gatAdopt(scope.$index, scope.row)">通过</el-dropdown-item>
<el-dropdown-item @click="getReject(scope.$index, scope.row)">驳回</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
解决方法:使用@click.native事件代替点击事件,用于监听根元素的原生事件。
9.如何从json里面移除某个元素
delete json['attribute'],(此操作删除不存在的属性不会报错),具体示例如下