Skip to content

Commit d4de4ba

Browse files
fix: 🐛 修复picker选择器绑定值value值为0时无法生效的问题
Closes: #195
1 parent be4a89c commit d4de4ba

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

src/pages/picker/Index.vue

+22-9
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,27 @@
33
<wd-toast />
44
<demo-block transparent>
55
<wd-cell-group border>
6-
<wd-picker label="单列选项" :columns="columns0" />
6+
<wd-picker label="单列选项" v-model="value0" :columns="columns0" />
77
<wd-picker label="禁用" disabled v-model="value1" :columns="columns1" />
88
<wd-picker label="只读" readonly v-model="value2" :columns="columns2" />
9-
<wd-picker label="loading" loading :columns="columns3" />
9+
<wd-picker label="loading" v-model="value3" loading :columns="columns3" />
1010
<wd-picker label="多列" v-model="value4" :columns="columns4" />
1111
<wd-picker label="多级联动" v-model="value5" :columns="columns5" :column-change="onChangeDistrict" />
1212
<wd-picker label="分隔符" v-model="value6" :columns="columns6" :display-format="displayFormat" />
13-
<wd-picker label="标题" :columns="columns7" title="文案标题" />
13+
<wd-picker label="标题" v-model="value9" :columns="columns7" title="文案标题" />
1414
<wd-picker label="before-confirm" :columns="columns0" v-model="value7" :before-confirm="beforeConfirm" />
15-
<wd-picker label="错误" error :columns="columns0" />
16-
<wd-picker label="必填" :columns="columns0" required />
15+
<wd-picker label="错误" v-model="value10" error :columns="columns0" />
16+
<wd-picker label="必填" v-model="value11" :columns="columns0" required />
1717
</wd-cell-group>
1818
</demo-block>
1919
<demo-block title="label 不传" transparent>
20-
<wd-picker :columns="columns0" />
20+
<wd-picker :columns="columns0" v-model="value12" />
2121
</demo-block>
2222
<demo-block title="大小" transparent>
23-
<wd-picker label="单列选项" size="large" :columns="columns0" />
23+
<wd-picker label="单列选项" v-model="value13" size="large" :columns="columns0" />
2424
</demo-block>
2525
<demo-block title="值靠右显示" transparent>
26-
<wd-picker label="单列选项" align-right :columns="columns0" />
26+
<wd-picker label="单列选项" v-model="value14" align-right :columns="columns0" />
2727
</demo-block>
2828
<demo-block title="默认插槽" transparent>
2929
<view class="default-slot">
@@ -88,12 +88,16 @@ 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')
92+
9193
const value1 = ref('选项3')
9294
const columns1 = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
9395
const value2 = ref('选项4')
9496
const columns2 = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
9597
9698
const columns3 = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
99+
const value3 = ref('选项4')
100+
97101
const value4 = ref(['中南大学', '软件工程'])
98102
const columns4 = ref([
99103
['中山大学', '中南大学', '华南理工大学'],
@@ -104,13 +108,22 @@ const value5 = ref(['110000', '110100', '110102'])
104108
const columns5 = ref([district[0], district[district[0][0].value], district[district[district[0][0].value][0].value]])
105109
106110
const value6 = ref(['中南大学', '软件工程'])
107-
const value8 = ref('选项1')
111+
const value8 = ref('选项2')
112+
const value9 = ref('选项1')
113+
const value10 = ref('选项2')
114+
115+
const value11 = ref('选项3')
116+
const value12 = ref('选项3')
117+
const value13 = ref('选项3')
118+
const value14 = ref('选项3')
119+
108120
const columns6 = ref([
109121
['中山大学', '中南大学', '华南理工大学'],
110122
['计算机科学与技术', '软件工程', '通信工程', '法学', '经济学']
111123
])
112124
113125
const columns7 = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
126+
114127
const value7 = ref('')
115128
116129
const onChangeDistrict: PickerViewColumnChange = (pickerView, value, columnIndex, resolve) => {

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

+4-4
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 (props.modelValue) {
126+
if (isDef(props.modelValue)) {
127127
setShowValue(pickerViewWd.value.getSelects())
128128
} else {
129129
showValue.value = ''
@@ -165,7 +165,7 @@ watch(
165165
displayColumns.value = newValue
166166
resetColumns.value = newValue
167167
// 获取初始选中项,并展示初始选中文案
168-
if (props.modelValue) {
168+
if (isDef(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-
props.modelValue && setShowValue(getSelects(props.modelValue)!)
230-
if (props.modelValue && pickerViewWd.value && pickerViewWd.value.getSelects) {
229+
isDef(props.modelValue) && setShowValue(getSelects(props.modelValue)!)
230+
if (isDef(props.modelValue) && pickerViewWd.value && pickerViewWd.value.getSelects) {
231231
setShowValue(pickerViewWd.value!.getSelects())
232232
}
233233
})

0 commit comments

Comments
 (0)