- 小程序体验版上传后,手机端正常登陆,但是在PC端小程序登陆错误?
在开发者工具中使用PC端的调试工具也可以正常登陆,但是上传上去在电脑上打开小程序(windows)就一直请求错误(promise进入了.catch
2023-11-29 - wx.NFCAdapter.onDiscovered()内部监听函数形成闭包?
功能是nfc读取文本后传到后端进行识别跳转页面,现在识别的部分跑通了,但是测试下来发现onDiscovered里面的监听函数的this指向有问题?首次进入页面的时候修改data中的值可以触发watch监听,后续重新切换路由就不触发watch了。 之前试过在onDiscover中调请求方法,然后用this传参,发现也不对,一直沿用第一次成功的参数。 如下是代码截图,我是通过watch监听修改后调接口,然后实现页面跳转的 watch: { cleanedcodeDataVal: { // immediate:true, // deep:true, handler(nv, v){ console.log('cleanedcodeData发生了变化', nv, v); if (nv) { this.showNFC = false this.handleScanLinkToDetail(this.cleanedcodeData, this.actionSheetNfcData) this.cleanedcodeData = '' } else { console.log('cleanedcodeData新值为空', this.cleanedcodeData); } } }, }, handelNfc(item){ this.actionSheetNfcData = {} this.actionSheetNfcData = item this.showNFC = true // #ifdef MP-WEIXIN // 获取nfc实例 const self = this const contentDiscoverHandler = (res) => { const byteToString = function (arr) { if (typeof arr === 'string') { return arr; } var str = '', _arr = arr; for (var i = 0; i < _arr.length; i++) { var one = _arr[i].toString(2), v = one.match(/^1+?(?=0)/); if (v && one.length == 8) { var bytesLength = v[0].length; var store = _arr[i].toString(2).slice(7 - bytesLength); for (var st = 1; st < bytesLength; st++) { store += _arr[st + i].toString(2).slice(2); } str += String.fromCharCode(parseInt(store, 2)); i += bytesLength - 1; } else { str += String.fromCharCode(_arr[i]); } } return str; }; // console.log('查看nfc感应返回的callback',res.techs,this.nfc.tech); // if (res.techs.includes(this.nfc.tech.ndef)) { // console.log('符合nfc标准',res.messages) let cordsArray = res.messages[0].records; // 经常性1次成功,多次空值。所以需要排除 if (!cordsArray.length > 0) { return } // 准备处理后数据的容器 let read = {} cordsArray.find(item => { read.payload = byteToString(new Uint8Array(item.payload)); read.id = byteToString(new Uint8Array(item.id)); read.type = byteToString(new Uint8Array(item.type)); }); let code = read.payload // 去除乱码字符 let cleanedcode = code.replace(/[^\x20-\x7E]/g, ""); console.log('nfc读取后获得的code字段==', cleanedcode, this.cleanedcodeData); this.cleanedcodeData = cleanedcode self.cleanedcodeData = cleanedcode console.log('nfc读取后赋值==', this.cleanedcodeData); } this.nfc.onDiscovered(contentDiscoverHandler) this.nfc.startDiscovery({ fail(err) { console.log('failed to discover:', err) } }) // #endif }, async handleScanLinkToDetail(cleanedcodeData, item){ const payData = { // 如果是详情页的扫码感应,type为detail type: 'list', content_id: this.contentId, fkd_content_id: item.fkd_content_id, code: cleanedcodeData } console.log('请求前检查请求参数', payData); // 调取接口获得跳转到详情页所需的data_id await this.$http.get('content/scan-code', { params: payData }).then((res) => { if (!res.data.success) { // 业务失败,错误信息 uni.showToast({ title: res.data.message, icon: 'error' }) } console.log('请求成功返回==', res.data); const data_id = res.data.data.id if (data_id) { this.setLinkToContentName(item.label) // 请求成功获取到data_id,可以进行跳转 uni.navigateTo({ url: `/pages_1/contentInfo/contentInfo?content_id=${item.fkd_content_id || this.contentId}&data_id=${data_id}&menu_id=${this.menu_id}&parent_menu_id=${this.parent_menu_id}¶meter_value=${this.parameter_id}&isLinkTo=1` }); } }).catch((err) => { // 请求失败 // uni.showToast({ // icon:'error', // title:this.$t('common.failed') // }) }) }, [图片][图片]上面两张真机截图分别是第一次进入,感应成功后触发watch调用请求方法的截图和后续进入,数据赋值但是没有触发watch的情况
2023-11-16 - 体验版小程序扫码进入登陆页后样式错误问题
使用的框架是uni-ui,uni-form组件,在调试工具一直正常。在扫码进入小程序体验版时登录页会样式错误,且登陆成功后不跳转页面。清理后台后再次进入功能和样式恢复正常。 [图片]
2023-10-16 - 子组件使用计算属性赋值修改props中对象中属性不生效?
pc端的项目是使用了计算属性直接修改父组件通过props传来的对象中的属性,绕开了单向数据流原则。我用uniapp在微信开发者工具中调试发现父组件中的值没有被修改,编译到浏览器端发现可以正常修改父组件中的值。 [图片] [图片] [图片]
2023-06-28