Skip to content

Commit 21839e0

Browse files
author
xuqingkai
committed
fix: 🐛 修复 Picker 未选择时显示第一列值的问题
1 parent 29195b7 commit 21839e0

2 files changed

Lines changed: 9 additions & 11 deletions

File tree

src/pages/picker/Index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ const district: Record<string, Array<{ label: string; value: string }>> = {
8888
}
8989
9090
const columns0 = ref(['选项1选项1选项1选项1选项1选项1选项1选项1选项1选项1选项1选项1选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
91-
const value0 = ref('选项3')
91+
const value0 = ref('')
9292
9393
const value1 = ref('选项3')
9494
const columns1 = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])

src/uni_modules/wot-design-uni/components/wd-picker/wd-picker.vue

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ watch(
123123
console.error('The type of displayFormat must be Function')
124124
}
125125
if (pickerViewWd.value && pickerViewWd.value.selectedIndex && pickerViewWd.value.selectedIndex.length !== 0) {
126-
if (isDef(props.modelValue)) {
126+
if (isDef(props.modelValue) && props.modelValue !== '') {
127127
setShowValue(pickerViewWd.value.getSelects())
128128
} else {
129129
showValue.value = ''
@@ -141,13 +141,13 @@ watch(
141141
(newValue) => {
142142
pickerValue.value = newValue
143143
// 获取初始选中项,并展示初始选中文案
144-
if (isDef(newValue)) {
144+
if (isDef(newValue) && newValue !== '') {
145145
if (pickerViewWd.value && pickerViewWd.value.getSelects) {
146146
nextTick(() => {
147147
setShowValue(pickerViewWd.value!.getSelects())
148148
})
149149
} else {
150-
setShowValue(getSelects(props.modelValue)!)
150+
setShowValue(getSelects(newValue)!)
151151
}
152152
} else {
153153
showValue.value = ''
@@ -165,7 +165,7 @@ watch(
165165
displayColumns.value = newValue
166166
resetColumns.value = newValue
167167
// 获取初始选中项,并展示初始选中文案
168-
if (isDef(props.modelValue)) {
168+
if (isDef(props.modelValue) && props.modelValue !== '') {
169169
if (pickerViewWd.value && pickerViewWd.value.getSelects) {
170170
nextTick(() => {
171171
setShowValue(pickerViewWd.value!.getSelects())
@@ -226,8 +226,8 @@ const { proxy } = getCurrentInstance() as any
226226
const emit = defineEmits(['confirm', 'open', 'cancel', 'update:modelValue'])
227227
228228
onMounted(() => {
229-
isDef(props.modelValue) && setShowValue(getSelects(props.modelValue)!)
230-
if (isDef(props.modelValue) && pickerViewWd.value && pickerViewWd.value.getSelects) {
229+
isDef(props.modelValue) && props.modelValue !== '' && setShowValue(getSelects(props.modelValue)!)
230+
if (isDef(props.modelValue) && props.modelValue !== '' && pickerViewWd.value && pickerViewWd.value.getSelects) {
231231
setShowValue(pickerViewWd.value!.getSelects())
232232
}
233233
})
@@ -246,10 +246,8 @@ function getSelects(value: string | number | Array<string | number | Array<any>>
246246
if (props.columns.length === 0) return
247247
248248
// 使其默认选中首项
249-
if (value === '' || value === null || value === undefined || (isArray(value) && value.length === 0)) {
250-
value = formatColumns.map((col) => {
251-
return col[0][props.valueKey]
252-
})
249+
if (value === '' || !isDef(value) || (isArray(value) && value.length === 0)) {
250+
return
253251
}
254252
const valueType = getType(value)
255253
const type = ['string', 'number', 'boolean', 'array']

0 commit comments

Comments
 (0)