问题
在vue实例中使用watch监听变化时,打印this指向实例的值为空?
打印结果如下所示:(这里的this.isModuleShow是组件里data的值)
解决
(分析结果:上下文指向问题)
- 解决前代码:
watch:{
'form.options.type':(value)=>{
if (value == "module") {
console.log('this.isModuleShow:',this.isModuleShow)
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
可以看出我在方法中使用的是箭头函数。
- 解决后代码:
watch:{
'form.options.type':function(value){
if (value == "module") {
console.log('this.isModuleShow:',this.isModuleShow)
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
修改为普通函数后,打印正确值:
- 其他正确写法:
watch: {
'form.options.type'(value){
if (value == "module") {
console.log('this.isModuleShow:',this.isModuleShow)
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
watch: {
"form.options.type": {
handler(value) {
if (value == "module") {
console.log("this.isModuleShow:", this.isModuleShow);
this.isModuleShow = true;
} else {
this.isModuleShow = false;
}
}
}
}