小程序picker是不是只能range一维数组

小程序picker是不是只能range一维数组,第1张

不是,支持多维数组

range-keyString 当 range 是一搏纤搜个 Object Array 时,通过 range-key 来指定 Object 中 key 的竖中值基历作为选择器显示内容

register.wxml

<view class="form-item list-msg">

<text class="颤羡item_name">性别</text>

<picker bindchange="pickSex" value="{{ gender }}" class="sex" range="{{ columns }}">

<view>

{{ columns[gender] == "" ? "请输入性茄改拍别" : "" }}{{ columns[gender] }}

</view>

</picker>

</歼芦view>

register.js

Page({

columns: ["未知", "男", "女"],

gender: 0 || wx.getStorageSync("gender") * 1,

})

pickSex: function(e) {

this.setData({

gender: e.detail.value

})

// console.log("当前选择性别-sex", e.detail.value)

},

picker设置 model="multiSelector" 时,可以成为多列选择器,比如一个二维对象数组 arr1=[{name1:'aaa1'}] arr2=[{name2:'aaa2'}] ,页面需要两列分别显示name1和name2,此时range可以设置为为 :range="[arr1,arr2]" ,可这样设置之后会有一个很大的问题,列1和列2显示的是object,其实我们最终要显示的是name1和name2,在model为selector时,range-key可以设置为要显示的那个字段名 :range-key="'name'" 来解决这个问题,但只是支持单列选择,在多列选择该怎么设置呢?原先以为range-key也可以像range一样设置成为一个多维简单数组,类似于 :range-key="['name1','name2']" ,后来发现这样做是行不通的,通过 uniapp源码 发现,rangeKey定义的是string,这意味着他不能接收数组,再通过具体显示数据时的下面源码发现,rangeKey只能是一个同样的字段名

因此,rangeKey不能分别设置为name1、name2,只能像单列选择器那样设置为 :range-key="'name'" ,

居于此,arr1的name1,arr2的name2要么就让后端将字段名称统一成一个返回,要么自己在获取到数据源时,自己for循环修改过来


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12364078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存