require('./utils/mixins_core') import fetchutil from './utils/http' // app.ts App({ globalData: { userInfo: '', hasAvatar: '' }, watch(key, method) { var obj = this.globalData; //加个前缀生成隐藏变量,防止死循环发生 let ori = obj[key]; //obj[key]这个不能放在Object.defineProperty里 if (ori) { //处理已经声明的变量,绑定处理 method(ori); } Object.defineProperty(obj, key, { configurable: true, enumerable: true, set: function (value) { this['_' + key] = value; method(value); }, get: function () { // 在其他界面调用key值的时候,这里就会执行。 if (typeof this['_' + key] == 'undefined') { if (ori) { //这里读取数据的时候隐藏变量和 globalData设置不一样,所以要做同步处理 this['_' + key] = ori; return ori; } else { return undefined; } } else { return this['_' + key]; } } }) }, login() { wx.login({ success: res => { fetchutil.get(`api/wx/login/${res.code}`, {}, {}).then((response) => { wx.setStorageSync('token', response.data.token) this.globalData.userInfo = { ...this.globalData.userInfo, ...response.data.wxUser } this.globalData.hasAvatar = response.data.wxUser.avatarUrl console.log(response); }) // 获取用户手机号 // fetchutil.get(`api/wx/getPhone/${res.code}`, {}, {}).then((res) => { // console.log('获取用户手机号', res); // }) }, }) }, onLaunch() { let token = wx.getStorageSync('token') if (token) { fetchutil.get(`api/wx/checkToken`, {}, {}).then((response) => { if (!response.data) { this.login() } }).catch(() => { // @ts-ignore this.login() }) } else { // @ts-ignore this.login() } }, })