- this.setData?
this.setData({ // [`banner[${num}]`]:S ['banner[num]']:S }) S是我前面赋值的一个地址,打印出来是地址没错。然后这个this.setData是函数中的一部分,num就是这个函数的一个传参,但是为什么data中的banner数组还是没有值
2021-04-01 - 关于image?
image组件无法显示图片,我设置了一些样式,然后图片地址是后端获取的,只有点开了图片之后才会正常显示是为什么 <image class="{{index==xindex?'imageBanner':'imageBanner_small'}}" data-index="{{index}}" data-item="item" bindtap="clickImg" src="{{item}}" wx:if="{{item.length>0}}"></image> clickImg(res){ console.log(res) var num=res.currentTarget.dataset.index wx.previewImage({ urls:[this.data.banner[num]] }) } 点开了功能是显示原图 [图片]
2021-04-01 - this.setData的问题?
[图片] [图片] 如上图,为什么this.setData没起到作用
2021-03-25 - 为什么程序运行时没有按照函数的顺序运行?
var token = ''; var timestamp = ''; var util = require('../../utils/md5.js'); var appSecret = '*******'; var sign = ''; var id = ''; var nonce = ''; var get = ''; //wx.getStorageSync('kitToken'); Page({ /** * 页面的初始数据 */ data: { src: 'imou://open.lechange.com/6L088A7RAJD6B81/0/1?streamId=0', url: '',//测试获取图片 kitToken: '' //wx.getStorageSync("kitToken") }, //获取id Id() { var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; var nums = ""; for (var i = 0; i < 10; i++) { var id = parseInt(Math.random() * 32); nums += chars[id]; } return nums; }, //获取随机数nonce Nonce() { var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; var nums = ""; for (var i = 0; i < 32; i++) { var id = parseInt(Math.random() * 32); nums += chars[id]; } return nums; }, //获取经MD5校验的sign签名 Sign(T, N, A) { var str = 'time:' + T + ',nonce:' + N + ',appSecret:' + A sign = util.hexMD5(str) }, //只获取当前时间戳 getTime() { timestamp = Date.parse(new Date()); //获取到的是毫秒 timestamp = timestamp / 1000; //转为时间戳 秒 console.log("当前时间戳为:" + timestamp); }, //获取当前时间,并计算出过期时间 getOvertime() { this.getTime(); let overtime = timestamp + 3600 //一个小时后是过期时间 wx.setStorageSync('overtime', overtime) console.log('过期时间' + overtime) }, //获取kitToken KitToken() { wx.cloud.callFunction({ name: 'http', data: { id: id, time: timestamp, nonce: nonce, sign: sign } }).then(res => { console.log('成功了') console.log(res) var STR = JSON.parse(res.result) console.log(STR.result.data.accessToken) // token=STR.result.data.accessToken //将access token存在本地缓存中,便于后期使用其他的api wx.setStorageSync('token', STR.result.data.accessToken) var storagetoken = wx.getStorageSync('token') console.log('储存了:' + storagetoken) this.getOvertime(); //不仅获取时间戳,同时token记录过期时间 nonce = this.Nonce() id = this.Id() this.Sign(timestamp, nonce, appSecret) wx.cloud.callFunction({ name: 'video', data: { id: id, time: timestamp, nonce: nonce, sign: sign, token: storagetoken } }).then(res => { console.log('成功获取kittoken') console.log(res) var STR = JSON.parse(res.result) console.log('这是res的数据:' + STR.result.data.kitToken) // var try { wx.setStorageSync('kitToken', STR.result.data.kitToken) } catch (e) { console.log(e) } }) }) }, //获取token,并将data值改变为可用kitToken Btn() { this.getTime(); //获得时间戳 nonce = this.Nonce() id = this.Id() this.Sign(timestamp, nonce, appSecret) console.log('这是nonce:' + nonce, '这是id:' + id, '这是sign:' + sign) //请求获得access token this.KitToken() }, //将本地缓存赋值给get getNew() { get = wx.getStorageSync('kitToken') this.setData({ kitToken: get }) console.log('成功储存了get:' + get + ',同时成功赋值给了data') }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { console.log(get) //进入页面前先查看是否有overtime的缓存,没有则表明是首次请求,有则非首次请求 var storagetime = wx.getStorageSync("overtime") var storagekit = (wx.getStorageSync("kitToken")) if (storagetime != "" && storagekit != "") { console.log(wx.getStorageSync("overtime")) //拿到现在时间时间戳 this.getTime(); //进行时间比较 //过期了,清空缓存,重新获取token if (storagetime < timestamp) { console.log("缓存已过期"); wx.removeStorageSync('kitToken'); //重新请求,并将请求的新的kitToken重新放入本地缓存 this.Btn(); this.getNew() } else { console.log("可以继续使用") this.getNew() //没过期,就取出本地缓存供kitToken继续使用 } } // 有过期时间但是kittoken为空,则清空overtime,重新请求获取新的kitToken和overtime else if (storagetime != "" && storagekit == "") { wx.removeStorageSync('overtime'); this.Btn() this.getNew() console.log('设置kitToken成功') console.log('这是新的kit' + this.data.kitToken) } //就是首次请求 else if (storagetime == "") { console.log('这是首次请求') this.Btn() this.getNew() console.log('请求成功') } }, [图片] [图片] 我觉得很奇怪,因为按我的编写时的想法是如果是首次请求,应该执行完Btn()函数的所有内容,请求获取了所有的数据,最后才会打印出“成功储存了get:"但是看调试的打印结果是没有执行kitToken()函数的内容,不然应该get是有值,kitToken不会为空。 为什么会跳过了kitToken的内容就直接渲染了前端?是因为里面试云函数的原因?求答复
2021-03-24 - 云函数发起http请求失败?
这是云函数 const cloud = require('wx-server-sdk') cloud.init() const got = require('got'); exports.main = async (event, context) => { const code=event.code; const url='http://localhost:9090/link.php?code='+code; let getResponse = await got(url) return getResponse.body } 这是调用的js: Btn(){ wx.login({ success (res) { if (res.code) { console.log(res.code) //发起网络请求 var code=res.code wx.cloud.callFunction({ name:'http', data:{ code:code } }).then(res=>{ console.log(res) }) } else { console.log('登录失败!' + res.errMsg) } } }) }, 错误: Error: cloud.callFunction:fail -404011 cloud function execution error. 云函数执行错误 云端堆栈信息(error stack)(requestId c0f9d766-886c-11eb-b043-525400fff70d, callid 1616128624067-0.8068190962394808): RequestError: connect ECONNREFUSED 127.0.0.1:9090 在postman等插件中测试该请求是可以返回正确的openid,证明不是服务器端代码的问题,想问下问题是出在哪里。依赖都装好了。
2021-03-19 - 关于云函数的功能?
在有些产品二次开发时,有时服务端也需要用网络请求获取外部在线接口,那些接口不能在前端请求,那云函数是不是能够去使用这些接口,当作服务器去使用呢
2021-03-17