picker,从底部弹起的滚动选择器。这里只讨论mode=”multiSelector”的格式
比较难理解的两个属性:range和value的搭配使用。
首先上官方定义:
1. range必须是二维数组或者二维对象数组。
2. value是一维数组,用于标记使用者选中了range里的哪几个值。
我们先考虑range为二维数组的情形:
由此可见,value数组第一项代表的是range中第一个数组里选中的值;value数组第二项代表的是range中第二个数组里选中的值。
range里有多少个数组,意味着value里有多少项
当用户改变picker里的值时,会触及到两个事件:columnchange和change。对应的handle可在bindcolumnchange里、bindchange里填写。还是和以前一样,上官方定义:
两者的区别在于,前者只要改变了某一列的值,哪怕没有真正选择它,都会触发columnchange事件;而后者只有真的选择了(即点击了选择器里的确定键),才能触发change事件。
现在我们来考虑range为二维对象数组的情形:
multiArray: [
[{
name: "江苏",
key: "1"
},
{
name: "安徽",
key: "2"
}],
[{
name:"南京",
key:"1"
},
{
name:"宿迁",
key:"2"
}]
], (这里为了简化将multiArray的第二项城市写死了,实际上是会根据省的不同而动态变化)
注意:里面的每一个一维对象数组格式必须保持一致,否则选择器的展示会出现undefined。
为了能让小程序知道你究竟要展示的是name还是key,你需要range-key属性:
剩下的与range为二维数组的情形基本一致。