diygw_com
diygw_com
  • 发布:2021-11-16 09:45
  • 更新:2022-07-25 12:40
  • 阅读:262

【报Bug】pickerview显示异常,小程序显示正常

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 3.2.12.20211029

HBuilderX类型: 正式

HBuilderX版本号: 3.2.12

浏览器平台: Chrome

浏览器版本: 95.0.4638.69

项目创建方式: HBuilderX

示例代码:

<template>
<view class="container">

    <view class="diygw-form-item diygw-col-24">  
        <view class="title">标题</view>  
        <view class="input">  
            <picker mode="multiSelector" @columnchange="changePickers" :value="pickersIndex" :range="pickersDatas">  
                <view class="uni-input">  
                    {{ pickersDatas[0][pickersIndex[0]] }},  

                </view>  
            </picker>  
        </view>  
    </view>  
</view>  

</template>

<script>
//create by: 邓志锋 280160522@qq.com http://www.diygw.com
export default {
data() {
return {
input2: '',
date1: '',
pickersInitDatas: [{
"children": [{
"children": [{
"children": [],
"text": "无锡市"
}, {
"children": [],
"text": "深圳市"
}],
"text": "广州市"
}, {
"children": [{
"children": [],
"text": "梅州市"
}],
"text": "中山市"
}],
"text": "广东省"
}, {
"children": [],
"text": "江苏省"
}],

            pickersDatas: [  
                ['广东省', '江苏省'],  
                ['广州市', '中山市'],  
                ['无锡市', '深圳市']  
            ],  
            pickersIndex: [0, 0, 0]  
        }  
    },  
    onShareAppMessage: function() {},  
    onLoad(option) {  
        if (option) {  
            this.setData({  
                globalOption: option  
            })  
        }  
    },  
    mounted() {  
        this.init();  
    },  
    methods: {  
        async init() {  

        },  
        getPickerChildren1(data,chindInex1,childIndex2){  
             if(chindInex1!=null && data[chindInex1] && data[chindInex1].children && data[chindInex1].children){  
                 let children = data[chindInex1].children  
                 //只判断一级  
                 if(childIndex2==null){  
                     if(children!=null && children.length>0){  

                        return children.map(item=>item.text)  
                     }else{  
                         return []  
                     }  
                 }else{  
                     //判断二级  
                     //有可能并设置下级结点  
                     if(children[childIndex2]==null){  
                         return []  
                     }  
                     let children2 = children[childIndex2].children  
                     if(children2!=null && children2.length>0){  
                        return children2.map(item=>item.text)  
                     }else{  
                        return []  
                     }  
                 }  
             }else{  
                 return []  
             }  

        },  
        changePickers(evt) {  
            this.pickersIndex[evt.detail.column] = evt.detail.value  
            if (evt.detail.column == 0) {  
                this.pickersIndex.splice(1, 1, 0)  
                this.pickersIndex.splice(2, 1, 0)  
                this.pickersDatas[1] = this.getPickerChildren1(this.pickersInitDatas,this.pickersIndex[0],null)  
                this.pickersDatas[2] = this.getPickerChildren1(this.pickersInitDatas,this.pickersIndex[0],0)  

            }else if (evt.detail.column == 1) {  
                this.pickersDatas[2] = this.getPickerChildren1(this.pickersInitDatas,this.pickersIndex[0],this.pickersIndex[1])  
                this.pickersIndex.splice(2, 1, 0)  
            }  
            this.$forceUpdate()  
        }  
    }  
}  

</script>

<style lang="scss"></style>

操作步骤:

就是拖动省份至江苏省,显示空是正常的,再拖回广东省时显示异常。

预期结果:

就是拖动省份至江苏省,显示空是正常的,再拖回广东省时显示异常,数据本身都是已经0 0 0。

实际结果:

显示上异常,显示上都自动至底部显示,不正确

bug描述:

pickerview因为可能某些子节点缺失的情况下,滑动后有些节点不会变化

2021-11-16 09:45 负责人:无 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

请升级至HBuilder X - 3.2.14-alpha版本试下

9***@qq.com

9***@qq.com

你好,请问你的这个显示问题后来是怎么解决的?

要回复问题请先登录注册