1***@qq.com
1***@qq.com
  • 发布:2023-05-28 18:40
  • 更新:2024-02-04 20:18
  • 阅读:508

【报Bug】cover-view在v-for循环中被删除后依然会存在

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.8.3

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 红米k40

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
    <view class="content">  
        <view class="videobox" v-for="(item,index) in videoList" :key="index">  
            <video :src="item.src"></video>  
            <cover-view class="header">  
                <cover-view class="name">{{item.name}}</cover-view>  
            </cover-view>  
        </view>  
        <button style="margin-top: 100rpx;" @click="del">删除首个视频</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                videoList:[  
                    {src: "https://www.runoob.com/try/demo_source/movie.mp4",name: '视频名称1'},  
                    {src: "https://www.runoob.com/try/demo_source/movie.mp4",name: '视频名称2'},  
                    {src: "https://www.runoob.com/try/demo_source/movie.mp4",name: '视频名称3'}  
                ],  
            }  
        },  
        onLoad() {  

        },  
        methods: {  
            del(){  
                this.videoList.splice(0, 1)  
            }  
        }  
    }  
</script>  

<style>  
    .content{  
        padding: 20rpx;  
    }  
    .videobox{  
        width: 100%;  
        height: 300rpx;  
        position: relative;  
        margin-bottom: 10rpx;  
    }  
    .videobox video{  
        width: 100%;  
        height: 100%;  
    }  
    .videobox .header{  
        position: absolute;  
        left: 0;  
        top: 0;  
        width: 100%;  
        height: 50rpx;  
        background: rgba(0, 0, 0, 0.6);  
        color: #FFF;  
        display: flex;  
        align-items: center;  
        justify-content: center;  
    }  
</style>  

操作步骤:

点击视频下方删除按钮

预期结果:

video和cover-view被删除

实际结果:

cover-view依然存在

bug描述:

在视频列表中给每个视频使用cover-view添加了一个视频名称覆盖在video之上,当数据被删除之后,cover-view依然会存在
附件 图1为删除前效果,图2为删除两个后效果
只会在app上出现,网页无法复现

2023-05-28 18:40 负责人:DCloud_UNI_Anne 分享
已邀请:

最佳回复

DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

问题已收到,待确认。
临时方案:你可以用类似数据库软删除的方案。具体来说:你每一个 item 加一个 isDelete默认是 false,然后 v-if=“!item.isDelete” 要删除哪一个就把他改成 true。仍然不行的话就根据isDelete设置 样式 width 设置为0。当然这些思路是临时方案,以便你马上解决问题,工程师确认问题后会从框架层面修复此问题

1***@qq.com

1***@qq.com (作者)

有人吗

Diligent_UI

Diligent_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序

数据更新,视图不更新吗

  • 1***@qq.com (作者)

    应该是更新了,cover-view里面的内容被删掉了,但是设置的背景色还在那. 奇奇怪怪的问题

    2023-05-30 10:09

1***@qq.com

1***@qq.com (作者)

有官方的人来看看吗

f***@outlook.com

f***@outlook.com

我也遇到了,怎么解决的

2***@qq.com

2***@qq.com

现在好了吗?我在cover-view添加了点击事件,逻辑是删除元素,最终的效果是和楼主一样的问题

1***@qq.com

1***@qq.com (作者)

临时解决方案:不要给上面代码示例中header添加background,给header创建一个子元素,子元素添加背景

要回复问题请先登录注册