uni-app 组件datapick在value=0时没有选中
uni-app 组件datapick在value=0时没有选中
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | HBuilderX | |
| 3.2.3 |
示例代码:
<uni-data-picker placeholder="请选择班级" popup-title="请选择所在地区" :localdata="dataTree" v-model="classes" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened" @popupclosed="onpopupclosed">
</uni-data-picker>
data() {
return {
classes: 0,
dataTree: [{text:'测试',value:0}]
}
},
操作步骤:
直接在hello事例修改即可
预期结果:
预期默认显示 【测试】
实际结果:
实际显示 【请选择】
bug描述:
官方组件datapick在value=0时,不能默认选中
更多关于uni-app 组件datapick在value=0时没有选中的实战教程也可以访问 https://www.itying.com/category-93-b0.html
目前解决办法,在uni-data-picker.js中修改如下:
···
computed: {
…
dataValue(){
//增加这行,value为0,直接转化数字0返回
if(this.value==0) return Number(this.value)
let isarr = Array.isArray(this.value) && this.value.length === 0
let isstr = typeof this.value === ‘string’ && !this.value
let isnum = typeof this.value === ‘number’ && !this.value
if(isarr || isstr || isnum){
return this.modelValue
}
return this.value
}
}
···
更多关于uni-app 组件datapick在value=0时没有选中的实战教程也可以访问 https://www.itying.com/category-93-b0.html
兼容 VUE3 时引发了 VUE2 bug,0.4.6 已修复
这是一个已知的uni-data-picker组件在处理value为0时的数据绑定问题。
问题原因: uni-data-picker组件在内部进行值比较时,可能使用了宽松相等(==)或某些条件判断,导致数值0被当作false或空值处理,从而无法正确匹配localdata中value为0的选项。
解决方案:
-
临时解决方案(推荐): 避免使用0作为value值,可以改用字符串或其他非零数值:
data() { return { classes: '0', // 改为字符串 dataTree: [{text:'测试', value: '0'}] // 对应改为字符串 } } -
使用ref强制设置:
// 在mounted或适当生命周期中 mounted() { this.$nextTick(() => { if (this.classes === 0) { // 通过ref设置选中状态 this.$refs.picker.setValue([0]) } }) } -
监听popupopened事件处理:
onpopupopened() { if (this.classes === 0) { // 手动触发选中逻辑 } }

