效果
主要就是在滚动选择时,动态改变column的值
代码
<van-popup
:show="data.showConfig"
position="bottom"
round
:close-on-click-overlay="false"
>
<van-picker
title="人脸检测器配置"
:columns="data.columns"
@confirm="selectHandle"
@cancel="data.showConfig = false"
@change="handleColumnDisabled"
/>
</van-popup>
const data = reactive({
columns: [
{
values: [
{ text: 'SSD', value: 'SSD' },
{ text: 'Tiny', value: 'Tiny' }
],
defaultIndex: 1
},
{
values: [
{ text: '0.1', value: 0.1 },
{ text: '0.2', value: 0.2 },
{ text: '0.3', value: 0.3 },
{ text: '0.4', value: 0.4 },
{ text: '0.5', value: 0.5 },
{ text: '0.6', value: 0.6 },
{ text: '0.7', value: 0.7 },
{ text: '0.8', value: 0.8 },
{ text: '0.9', value: 0.9 },
],
defaultIndex: 4
},
{
values: [
{ text: '128', value: 128 },
{ text: '160', value: 160 },
{ text: '224', value: 224 },
{ text: '320', value: 320 },
{ text: '416', value: 416 },
{ text: '512', value: 512 },
{ text: '608', value: 608 }
],
defaultIndex: 3
}
]
})
// 控制人脸检测器选项
const handleColumnDisabled = (allSelected, rowIndex) => {
if (rowIndex === 0) {
data.columns[2].values =
allSelected[0].value === 'SSD'
? data.columns[2].values.map(item => ({ ...item, disabled: true }))
: data.columns[2].values.map(item => ({ ...item, disabled: false }))
}
};