平时开发中遇到的一些问题及解决方法(记录在juejin社区)
安装node js,输入命令,提示:’node’ 不是内部或外部命令,也不是可运行的程序 或批处理文件的解决方法
大概率问题是环境变量未配置的问题
- 控制面板>系统>高级系统设置>高级>环境变量
- 新建用户环境变量
NODE_PATH
(变量名),值就是nodejs
安装路径(C:\Program Files\nodejs
)默认安装路径- 编辑用户变量
Path
把nodejs
路径直接添加在后面即可
Vue报错Uncaught TypeError: Cannot read property ‘match’ of undefined
vue页面后退控制台报错
是因为a
标签没有设置href
属性,加上href
属性就好了
vue-awesome-swiper 使用loop:true后点击事件不生效的问题
1 | <template> |
会发现
loop
出来的点击事件不生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 //解决
data() {
let vm=this;
return {
swiperOption: {
slidesPerView: 1,
spaceBetween: 30,
loop: true,
pagination: {
el: '.swiper-pagination',
clickable: true
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
},
on:function(e){
vm.next(e)//获取所需要的参数
}
}
}
}
js动态往body添加dom
1 | let elem = document.createElement("div"); |
监听页面关闭或刷新执行
原理1
2
3
4
5
6
7
8
9
10
11
12window.onbeforeunload = function (e) {
e = e || window.event;
// 兼容IE8和Firefox 4之前的版本
if (e) {
// e.returnValue = '关闭提示';
}
// Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
// return '关闭提示';
localStorage.removeItem("ax");
};
在vue
中使用1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17created(){
window.addEventListener('beforeunload', this.leaveConfirm)
},
methods: {
leaveConfirm (e) {
e = e || window.event
if (e) {
// e.returnValue = '关闭提示'
}
// return '关闭提示'
// 执行一些操作
localStorage.removeItem('xx')
},
},
destroyed () {
window.removeEventListener('beforeunload', this.leaveConfirm);
},
Vue无痕刷新
1 | //App.vue |
还有两种方法(体验一般)
- 这两种都可以刷新当前页面的,缺点就是相当于按
ctrl+F5
强制刷新那种,整个页面重新加载,会出现一个瞬间的空白页面,体验不好
1
2 location.reload()
this.$router.go(0)
- 先跳转一个空白页,再跳转回来,这种方法就是地址栏url会有瞬间变化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<template>
<div></div>
</template>
<script>
export default {
mounted() {
let redirect = this.$route.query.redirect;
this.$router.replace(redirect);
},
};
</script>
<style lang="less" scoped>
</style>
ElementUI DatePicker选择月当前月份高亮样式修改
1 | <template> |
Css实现滚动时隐藏滚动条
1 | html { |
Vue install 使用
1 | const plugin = { |
在main.js中引入1
2import copy from './assets/js/plugin' //plugin.js根据项目中的位置自己定
Vue.use(copy,{name:'shadow'}) //使用与传参
jsonp判断url是否能打开
1 | $.ajax({ |
获取Url参数(兼容哈希)
1 | let url='https://xxx.cn/phone/dist/index.html?dataOpenId=oppyn1BSQzOA4C1706jNWLUoaSnU&dataUserId=406f3640614511ebad49bd6e5d36a63a#/home' |
Elementel-cascader
级联选择器动态加载及回显
误区:默认不需要自己去加载第一层数据,会自动请求第一层数据
回显只需要传入address数组即选中的id回显会自动去请求回显
addressList设置空数组即可
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 <el-cascader
ref="cascaderAddr"
:props="addressProps"
v-model="address"
:options="addressList"
@change="addressChange"
></el-cascader>
<script>
export default {
name: "Home",
data() {
return {
addressList:[],
address:[],
addressProps:{
label:'title',
value:'key',
lazy: true,
lazyLoad(node, resolve){
const { level } = node;
const nodes = [];
homeRecommendApi.getTree({pId:node.value}).then(res=>{
res.data.map(item=>{
let obj = {
key: item.key,
title: item.title,
leaf: level >= 3,
};
nodes.push(obj);
})
resolve(nodes);
})
}
},
};
},
};
</script>
微信小程序使用Echarts控制台报错非法颜色none
在ec-canvas
文件夹下wx-canvas.js
文件的_initStyle()
方法中加入代码
使用
force-use-old-canvas="true"
属性引起(该属性解决图表不随屏幕滚动问题)
1
2 <ec-canvas id="progressChart" canvas-id="mychart-bar" ec="{{ ecProgress }}" force-use-old-canvas="true">
</ec-canvas>
1 | var styles = [ |
将字符串转换成数组("[上海, 天津, 河南]"
)
1 | "[上海, 天津, 河南]".replace (/\[|]/g, '').split(',') |
浙里办数据脱敏
1 | const desensitization = (str, beginLen, endLen = -1) => { |
字符串首字脱敏展示
1 | const maskChineseString=(s)=>s.replace(/^(.)/, "*") |
Element的el-time-picker选择了时间点确定后鼠标快速移入选择框选择框再次显示问题
通过修改
css
的方法(缺点:会移除显示隐藏的动画)1
2
3.el-time-panel {
transition: none ;
}失去焦点事件内手动执行关闭显示框
1
2
3setTimeout(() => {
this.$refs.timePicker.pickerVisible = false;
}, 50);最优解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19data () {
return {
externalVisible:false
}
},
methods:{
handleOnFocus (ref) {
if(ref.pickerVisible && this.externalVisible) {
ref.pickerVisible = false
ref.blur()
}
},
handleOnBlur (ref) {
ref.picker.$on("dodestroy", () => {
this.externalVisible = false
})
this.externalVisible = true
},
}