最近在写小程序,发现了一些细节性的问题,在这里做一个记录,和大家一起学习。
1.先来说说picker吧,我是在写选择地址的时候遇到的问题。
picker的第一个问题就是怎么在后台获取到提交的数据,我用的是this.data.xxxx[e.detail.value].xxxx
这是我的picker选择器,就不细说了,中间view是用来回显的,.name是我的对象集合里的一个属性,你们可以随便点,想要什么点什么,city呢可以解释为数组下标,可以在js里初始化一下。cityList是我后台返回的数据用setData给它的。
wxml:
<picker class="picker" name="id" bindchange="bindChange" value="{{city}}" range="{{cityList}}" range-key="name">
<view> 市:{{cityList[city].name}} </view>
</picker>
js:
bindChange: function(e) {
cityName = this.data.cityList[e.detail.value].name
console.log(cityName)
},
this.data.集合[e.detail.value].所需要的属性
这样,就可以获取到picker的值了
2.下面在说说form表单提交时的问题吧。第一做小程序表单时,会发现与web有很大不同。因为小程序表单提交之后,input里的数据没有消失,页面没有任何变化,如果你不打个输出语句,你都看不出表单到底有没有提交成功。这让我这样第一次写小程序的小白慌的一批,以为是哪里写错了。其实,哪里都没错,小程序就是这样。
我是这样来处理这个问题的,用:
wx.navigateBack({
delta: 1
})
可以返回上一层,1是返回上一层,2就是返回两层。这样成功之后,页面跳转回去。
写到这里,觉得写的差不多了,但偏偏picker又出来搞事情。
什么问题呢?就是虽然你提交了,页面也跳转了,input里的数据也消失了,但picker里选中的数据并没有消失,因为 xxx = this.data.xxxx[e.detail.value].xxx.
用了等号,xxx也就把数据存到变量里了,所以它是有值的。
我是这样来处理这个问题的:
success: function(e) {
provinceName = 0,
cityName = 0,
areaName = 0
console.log("成功");
没有错,就是表单提交成功以后,我把他们又重新初始化一下,这样再次添加的时候他们都是0