建议你在扫码前把页面加载好,用个变量flag设置是否显示页面,这样可以快速响应页面
wx.scanCode出现空白页面的问题,求解- 当前 Bug 的表现(可附上截图) 使用三星手机(其他手机暂未发现有此问题),调用扫码API。如果对同一个二维码扫两遍,API调用成功返回时,页面会出现5~10秒的空白,之后才渲染出页面。三星手机A9,型号:SM-A6058, Android 8.0 - 预期表现 调用成功,应快速显示页面,而不是在等待 - 复现路径 - 提供一个最简复现 Demo [代码]wx.scanCode({[代码][代码] [代码][代码]onlyFromCamera: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]scanType: [[代码][代码]'qrCode'[代码][代码],[代码][代码]'barCode'[代码][代码]],[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]let redeemCode = res.result[代码][代码];[代码][代码] [代码][代码]that.setData({[代码][代码]redeemCode: redeemCode[代码]})[代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码][代码](error){[代码][代码] [代码][代码]console.log(error)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码]
2018-08-27wx.canvasToTempFilePath()函数是异步的,要在ctx.draw(),回调中settimeout执行你要的代码防止图片丢失!
canvas处理图片上传保存图片流只显示一半- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 - 复现路径 - 提供一个最简复现 Demo js代码 wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: itemIndex == 0 ? ['album'] : ['camera'], success: (res) => { console.log(res.tempFilePaths) const item = new IMOperator(this).createNormalChatItem({ type: 'image', content: res.tempFilePaths, isMy: true, }); that.data.chatItems.push(item); that.setData({ chatItems: that.data.chatItems, scrollTopVal: that.data.scrollTopVal + 999, }); // 图片加水印功能 // var arr = that.data.fileList // res.tempFilePaths.forEach(function(item) { // arr.push(item) // }) // that.setData({ // fileList: arr // }) //获取图片详细信息 wx.getImageInfo({ src: res.tempFilePaths[0], success: (ress) => { console.log(ress) let date = new Date(); let time = that.formartDate(date); let ctx = wx.createCanvasContext('firstCanvas'); that.setData({ canvasHeight: ress.height, canvasWidth: ress.width }) //将图片src放到cancas内,宽高为图片大小 ctx.drawImage(res.tempFilePaths[0], 0, 0, ress.width, ress.height) //将声明的时间放入canvas ctx.setFontSize(20) //注意:设置文字大小必须放在填充文字之前,否则不生效 ctx.setFillStyle('blue') // ctx.setGlobalAlpha(0.5) ctx.fillText('15200000001', that.data.canvasWidth - 400, that.data.canvasHeight - 150) ctx.fillText(time, that.data.canvasWidth - 500, that.data.canvasHeight - 100) ctx.draw(false, function() { wx.canvasToTempFilePath({ canvasId: 'firstCanvas', success: (res) => { that.setData({ canvesimgurl:res.tempFilePath }) }, fail: (e) => { console.log(e) } }) }) wx.uploadFile({ url: '、、、', filePath: that.data.canvesimgurl, name: 'file', formData: {}, header: { "Content-Type": "multipart/form-data" }, success: function (res) { console.log(res) var url = res.data.url; var data = res.data.fileId; var imgtype = "image"; if (res.statusCode == 200) { that.sendmessage(data, url, imgtype) } else { let index = parseInt(that.data.chatItems.length - 1); that.updateViewWhenSendFailed(index) } console.log(res.data) }, fail: function (res) { console.log(res) }, complete: function (res) { console.log(res) } }) } }) } }); });
2018-08-27wx.getImageInfo()函数是异步的,肯定会导致for循环错位,你要想有序可以使用settimeout实现 [代码]var[代码] [代码]i=0;[代码][代码]var[代码] [代码]timer=setTimeout([代码][代码]function[代码][代码](){[代码][代码]console.log(i);[代码][代码]var[代码] [代码]timerThat=[代码][代码]this[代码][代码];[代码][代码]//定时函数[代码][代码]if[代码][代码](i<9){[代码][代码]wx.getImageInfo({[代码][代码]src:url,[代码][代码]success:[代码][代码]function[代码][代码](res){[代码][代码]i++;[代码][代码]console.log(i);[代码][代码]//执行你要的代码块;[代码][代码]timer=setTimeout(timerThat,50);[代码][代码]//下一次循环[代码][代码]}[代码][代码]})[代码][代码]}[代码][代码]else[代码][代码]{[代码][代码]console.log(i);[代码][代码]clearTimeout(timer);[代码][代码]}[代码] [代码]},50)[代码]
关于for循环一级作用域是有序的但二级作用域是无序的wechatide://minicode/VYu6vXmR7K1Y 代码片段 [图片] [图片]
2018-08-26你是用this.setData()更新image的src吗,不是的话,就不会动态显示图片
image src变成了新的 图片不是新的选择了本地图片,然后发送到后台,解析并保存到图片服务器上 ,然后把这个图片地址填到<image src='' "> 的时候,这时候显示的图片还是旧的 ,把地址保存到数据库,在其他页面打开还是旧的,但是打印出来地址是新的,然后重新编译以后可以显示新的,图片地址也是新的 在线等很急!!!!!!!!!!!!!!!
2018-08-26用settimeout延迟执行其他函数, 这个API函数无法返回值
wx.createSelectorQuery()如何返回数据- 需求的场景描述(希望解决的问题) let that = this console.log(wx.createSelectorQuery().select('#id').boundingClientRect(function(rect){ // 可以在此处赋值,不知如何将获取到的值返回? that.setData({ key: rect.height }) }).exec()) // 输出: undefined - 希望提供的能力 let that = this let height = 0 wx.createSelectorQuery().select('#id').boundingClientRect(function(rect){ // 可以在此处赋值,不知如何将获取到的值返回? that.setData({ key: rect.height }) height = rect.height }).exec() return height 例如将获取参数的行为,封装成一个方法,取到值后返回相应的值。该操作应该是异步的,所以在调用Api之后返回数据,是0. 不知道是否有相关的取值方式,自己试了在exec()中返回也是无效。
2018-08-23看下你的wxml页面,跳转触发是否用按钮进行的?
wx.navigateTo多次切换跳转页面失败- 当前 Bug 的表现(可附上截图) [图片] 点击后 页面 没有跳转 [图片] - 预期表现 点击后跳转 到相应的页面 [图片] 来回切换页面 8次 属于正常 第9次切换 便失效, 当点击返回时,再次切换 又可以切换2-3次 然后就又失效了,但是使用 wx.redirectTo(),就不会出现这样的问题,但是使用这个就不能返回了 , 需要各位大神提点提点,拜托了 嘿嘿
2018-08-23自己找到问题了,该小米手机的微信版本为6.6.1,对应SDKVERSION为1.9.9,官方文档只说最低版本为1.9.9,然而不包括1.9.9,只能升级到比它高的版本才可进行事件响应
求解小米手机MIUI 9.6 movable-view 事件不生效- 当前 Bug 的表现(可附上截图) 目前测了3款手机,苹果、华为表现均正常调用onScale、onChange事件,只有小米手机不行 苹果、华为: [图片] 小米手机 系统为MIUI9.6 [图片] - 预期表现 - 复现路径 - 提供一个最简复现 Demo <movable-area style="height: 100px; width: 100px;margin-left:8%"> <movable-view style="width: 300px;height:185px" direction="all" bindchange="onChange" bindscale="onScale" scale scale-min="1" scale-max="4" scale-value="1"> <image style="width: 300px;height:185px" mode="aspectFit" src="{{imgUrl}}"></image> </movable-view> </movable-area> data: { imgUrl: null, title: null, x: 0, y: 0 }, tap: function(e) { this.setData({ x: 30, y: 30 }); }, onChange: function(e) { console.log(e.detail) }, onScale: function(e) { console.log(e.detail) },
2018-08-23