问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 微信小程序 需求 工具 6.6.6 1.9.94
- 需求的场景描述(希望解决的问题)
Page({
onload(){
let app = getApp()
let that = this
let customer = new customer(app ,that )
}
})
function customer(app,indexPage){
this.app= app
this.api= '//api地址
this.appid= ''//appid
// this.indexPage = indexPage
}
customer.prototype.login=function(){
let result ={}
let thatt = this
let url = this.api + "地址"
let form_data = {}
wx.login({
success: function (res) {
let client_code = res.code
wx.request({
url: url,
data: {
app_id: thatt.appid,
client_code: client_code,
scene: '101',
},
method: 'POST',
success: function (res) {
if (res.data.status == 'success') {
result=res.data.data
console.log(result)
// thatt.indexPage.setData({ login_info: res.data.data })
} else { systemAlert(res.data.info); }
},
fail: function (res) { systemAlert(res.errMsg); }
})
},
fail: function (res) { systemAlert('登陆失败'); }
})
}
为什么这个时候我登陆成功以后为什么不能用thi.setData({})
微信小程序开发问题解答
微信小程序开发者回答:
不是,就是把对象中的对象中的this作为行参,将page中的this作为实参,仅此而已,但因为login的回调,作用域发生变化,可以用es6箭头,但如果不用传参的this指向的也只是customer而不是page,这个就是有点绕。
微信小程序开发者回答:
简单说 你用es6的箭头函数吧 this的作用域默认指到外面
微信小程序开发者回答:
官方并没有这个方法,只是再面向对象的写法里,如果要调用this.setData需要解决thi的指向问题就行了,
微信小程序开发者回答:
this.indexPage.setData请问楼主,官方有介绍这个方法吗,如果有可以截图看看吗?
微信小程序开发者回答:
其实只要对象中的this.setData中的this指向page中的this即可,
微信小程序开发者回答:
最好搞清楚this的作用域以及function.bind这两个东西
微信小程序开发者回答:
代码并没有问题
微信小程序开发者回答:
已经解决了,需要使用thatt.indexPage.setData({ login_info: res.data.data })
微信小程序开发者回答:
直接thatt.setData({})
如果跨页面可以存成app.globalData.({})
微信小程序开发者回答:
你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
本文网址:http://www.91bianli.com/weixinxiaochengxu/48745.html