问题: 微信小程序中提示错误:
问题源码:
onLoad: function() {
wx.showLoading({
title: '加载中…',
})
try {
// var self = this
wx.request({
url: app.url+'/xxx',
method:'post',
data:{
"index":"hello"
},
success:function(e){
this.setData({//这一句出错了
Total:e.data,
})
wx.hideLoading({})
},
fail:function(e){
wx.hideLoading({
},
})
}
})
} catch (error) {
wx.hideLoading({})
wx.showToast({
title: '加载失败',
})
}
},
Cannot read property ‘setData’ of undefined;at api request success callback function
解答:
这是因为this的作用域比较短,当进入回调函数success中的时候,this就会被消灭了。
所有会出错显示没有定义
方法
用变量定义解决
var self = this
后面使用self.xxx进行调用即可
修改后的代码
onLoad: function() {
wx.showLoading({
title: '加载中…',
})
try {
//这里使用this赋值给self
var self = this <===1 这里修改了
wx.request({
url: app.url+'/xxx',
method:'post',
data:{
"index":"hello"
},
success:function(e){
//这里使用self即可
self.setData({<===2 这里修改了
Total:e.data,
})
wx.hideLoading({})
},
fail:function(e){
wx.hideLoading({
},
})
}
})
} catch (error) {
wx.hideLoading({})
wx.showToast({
title: '加载失败',
})
}
},