以下为个人学习微信小程序时遇到的一些问题及解决方法,如果有误欢迎指正。
目的:今天写微信小程序的时候遇到了一个问题,我想把每次输入框输入的内容添加到数组中,然后使用wx.setStorage存储到本地缓存中(类似于添加购物车的内容)。
过程:在我使用push()方法给数组添加元素的时候出现了这样的问题:
WXML页面代码:
<input placeholder="请输入内容" focus="true" bindinput="setpass"></input>
<button bindtap="setSto">
点击储存信息
</button>
js页面代码:
Page({
data: {
password:"",
pslish:[]
},
onShow(){
let _this=this;
wx.getStorageInfo({
success: function(res) {
let resArr=res.keys //获取储存中的keys数组
for(let i =0;i<resArr.length;i++){
console.log("resArr[i]---",resArr[i])
if (resArr[i] ==="pslish"){
wx.getStorage({ //循环获取每一个Storage的内容值
key: resArr[i],
success: function (res) {
console.log("res--", res)
_this.setData({
pslish: res.data||[]
})
},
fail(){
_this.setData({
pslish: []
})
}
})
}
}
},
})
},
setpass(e) {
let _this=this;
this.setData({
password:e.detail.value
})
},
setSto() {
let _this=this;
console.log("_this.data.pslish----", _this.data.pslish)
console.log("_this.data.password----", _this.data.password)
let psListData = _this.data.pslish.push(_this.data.password)
console.log("psListData----", psListData)
this.setData({
pslish: psListData
})
wx.setStorage({
key:'pslish',
data: _this.data.pslish
}
)
}
})
当我在input框输入内容并点击“储存信息时”,查看控制台输出的内容:
使用push()或者unshift()方法给数组添加元素之后,发现我们的数组变成了一个数字!!!
使用typeof 检查类型,发现是number。
也就是说,我们的数组变成了数字1。
Storage里面查看,果然也是如此,
value是1,type是Number。
那么微信小程序里面怎么给数组添加元素呢?
修改上面的代码,使用concat()方法
保存刷新,记得清除Storage!!! ,在input中随便输入内容后,再次查看:
发现Storage里面已经可以存进去我们要的数组了:显示类型为Array。