微信小程序笔记

微信小程序:

关于微信小程序的数据存储
本意是做一个记录类型的微信小程序,最开始以为缓存就能搞定了,果然还没毕业的大学生过于单纯·····
后面醒悟了,得用服务器储存数据鸭···
微信小程序提供了云开发,可以使用自带的云数据库,很方便。官方网站有教程。
做到一半,又遇到问题。
数据获取了之后,console.log(“res.data”)确实能输出要的数据,但是使用setdata传不了值。
解决方法:


data: {
	dataArray: []
}
var db = wx.cloud.database()
var that = this
db.collection('weight').where({
	datemonth: "1"
}).get({
	success(res) {
		that.setData({
		dataArray:res.data
		})
	}
})

转换类型
String变number类型 ===》 parseInt()

直接在键盘上输入数字到

<view class="weight">
    <input type='number' placeholder="输入体重:kg" focus="{{focus}}" class='input-sub' name='weightData'/>
  </view>

貌似从js用e.detail.value.heightData提取出来的数据是String类型的,我1+1加了之后等于11来着····
所以搜了一下
得用parseInt()转换类型

   var heightData = parseInt(e.detail.value.heightData)

这种转换成number的类型就可以了。
emmm,太久没复习js···看到1+1=11我都没反应过来是怎么了···

保留数几位
有两种方法

NumberObject.toFixed(num)  //返回字符串
NumberObject.toPrecision(num) //返回number

微信小程序异步请求的坑,数组获取不了长度的问题
搞了一个早上。

 creatData: function (event) {
    var dataName = []
    var dataNum = []
    var that = this
    var db = wx.cloud.database()
      db.collection('weight').where({
        id: "0",
        datemonth: "02"
      }).get({
        success(res) {
          for (var j = 0; j < res.data.length; j++) {
            dataName.push(res.data[j].datemonth + '.' + res.data[j].dateday)
            dataNum.push(res.data[j].num)
          }
        },
        fail(res) {
          console.log("fail")
        }
      })
    return {
      dataName: dataName,
      dataNum: dataNum
    }
  }

搞了一个早上我就是获取不到dataName,和dataNum的值。
出错情况
数组的内容似乎是异步添加的,当执行console.log() 时,数组是空的,在 devtools 里点开这个数组时,内容已经被异步添加上去了。不知道这么解释是不是对的,我也还有点糊涂。
后面我捣鼓了一下,发现这个数组的获取要一直到页面卸载才获取得到····
onLoad,onShow,onReady这些都不会执行····
最后用promise解决了

Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。

最终代码

creatData:function(event){
    var dataName = []
    var dataNum = []
    var that = this
    var db = wx.cloud.database()
    return new Promise(function(resolve,reject){
      db.collection('weight').where({
        id: "0",
        datemonth: "02"
      }).get({
        success(res) {
          for (var j = 0; j < res.data.length; j++) {
            dataName.push(res.data[j].datemonth + '.' + res.data[j].dateday)
            dataNum.push(res.data[j].num)
          }
          resolve({dataName,dataNum})
        },
        fail(res) {
          reject("fail")
        }
      })
    })
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值