require('./utils/mixins_core') import fetchutil from './utils/http' // app.ts App({ globalData: { // @ts-ignore userInfo:'', hasAvatar: '' }, // @ts-ignore watch(key, method) { var obj = this.globalData; //加个前缀生成隐藏变量,防止死循环发生 // @ts-ignore 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]; } } }) }, // @ts-ignore login() { // 登录 wx.login({ success: res => { fetchutil.get(`wxLogin/${res.code}`, {}, {}).then((response: any) => { wx.setStorageSync('token', response.data.token) this.globalData.userInfo = { ...this.globalData.userInfo, ...response.data.wxUser } // @ts-ignore this.globalData.hasAvatar = response.data.wxUser.avatarUrl }) // 发送 res.code 到后台换取 openId, sessionKey, unionId }, }) }, onLaunch() { // // @ts-ignore // this.login() let token = wx.getStorageSync('token') if (token) { fetchutil.get(`wxCheckToken`, {}, {}).then((response:any) => { this.globalData.userInfo = { ...this.globalData.userInfo, ...response.data } // @ts-ignore this.globalData.hasAvatar = response.data.avatarUrl }).catch(()=>{ // @ts-ignore this.login() }) } else { // @ts-ignore this.login() } }, })