微信小程序笔记

  • Post author:
  • Post category:小程序


微信小程序:


关于微信小程序的数据存储


本意是做一个记录类型的微信小程序,最开始以为缓存就能搞定了,果然还没毕业的大学生过于单纯·····

后面醒悟了,得用服务器储存数据鸭···

微信小程序提供了云开发,可以使用自带的云数据库,很方便。官方网站有教程。

做到一半,又遇到问题。

数据获取了之后,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")
        }
      })
    })
  }



版权声明:本文为qq_39317423原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。