从图中可以看出,这个goodsList的数据是可以取到的,但是在AppData中没有看到记录,并且使用vue中的v-for指令循环数据时也没有渲染。
success(res) {
console.log(res)
//这里的this,指向的是当前的res对象,故这样子写,是无法将值赋给goodsList的
this.goodsList = res.data
},
fail(err) {
uni.showToast({
title:"请求失败...",
icon:"none"
})
console.log(err)
}
正确示例:
success: res=>{
console.log(res)
//这里的this指向的是当前页面实例,也就可以拿到data()中定义的goodsList,这时再看AppData中就会有数据了,这里可以参考图一中的types
this.goodsList = res.data
},
fail: err=>{
uni.showToast({
title:"请求失败...",
icon:"none"
})
console.log(err)
}
错误代码及问题原因:
success(res) {
if(res.statusCode != 200){
uni.showToast({
title:"请求数据失败,请稍后重试...",
icon:"none"
})
return ;
}
console.log(res.data); //这里有数据
//错误的原因:还是this的指向问题,这里的this指向的是res对象
this.goods = res.data; //这里报错
console.log(this.goods); //还里也报错
}
正确示例:
success: res=>{
if(res.statusCode != 200){
uni.showToast({
title:"请求数据失败,请稍后重试...",
icon:"none"
})
return ;
}
console.log(res.data);
this.goods = res.data; //这里的this就指向的是当前页面的实例
console.log(this.goods); //也就可以拿到data中的数据了
}
在普通函数中,this指向的是调用该函数的对象,function(obj){}
中的obj对象,而在箭头函数中this则指向的是当前的上下文。
这两次的错误提示都是不一样的,但是,错误的原因都是this指向的问题,所以在vue的开发中需要注意this的指向问题。