uni-app 报一个关于uni-file-picker组件的BUG
uni-app 报一个关于uni-file-picker组件的BUG
示例代码:
<uni-file-picker limit="5" :sourceType="sourceType" title="最多选择5张图片"
[@delete](/user/delete)="(e) => deleteimage(e,index)" @select="(e) => handleChange(e, index)"
v-model="item.pictureUrlList"></uni-file-picker>
deleteimage(e, type) {
for (var i = 0; i < this.executeDtoList[0].executeParamList[type].pictureUrlList.length; i++) {
if (e.index === i) {
this.executeDtoList[0].executeParamList[type].pictureUrlList.splice(i, 1);
console.log(this.executeDtoList[0].executeParamList)
}
}
},
操作步骤:
<uni-file-picker limit="5" :sourceType="sourceType" title="最多选择5张图片"
[@delete](/user/delete)="(e) => deleteimage(e,index)" @select="(e) => handleChange(e, index)"
v-model="item.pictureUrlList"></uni-file-picker>
deleteimage(e, type) {
for (var i = 0; i < this.executeDtoList[0].executeParamList[type].pictureUrlList.length; i++) {
if (e.index === i) {
this.executeDtoList[0].executeParamList[type].pictureUrlList.splice(i, 1);
console.log(this.executeDtoList[0].executeParamList)
}
}
},
预期结果:
不覆盖本地图片数组的数据
实际结果:
覆盖了我本地图片数组的数据
bug描述:
这块代码的作用是在删除图片的时候,同时删除本地图片数组的数据。 但在uni-file-picker删除选中的图片时,通过@delete监听事件调用deleteimage方法,这个方法会把本地数组里的数据更改为方法deleteimage(e, type)里传的e数据,这个我有点没明白是怎么回事。
如附件2打印出来的数据。上面红框显示的是调用方法之前的本地图片数组的数据。下面红框打印的是调用deleteimage方法之后的本地图片数组的数据,图片是成功删除了,但还会把e数据覆盖到我本地图片数组的数据。
如附件3,保证绝对没有其他的代码存在
项目信息 | 详细信息 |
---|---|
产品分类 | uniapp/小程序/微信 |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | win10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.29 |
第三方开发者工具版本号 | 1.06.2407120 |
基础库版本号 | 3 |
项目创建方式 | HBuilderX |
可能是你 v-model 绑定了你要修改的这个数据吧,v-model 一般只是用来回显数据,你可以尝试打印 v-model 的绑定值看一看
v-model绑定的就是我图片本地数组
刚才我试了一下,跟v-model没有关系,因为我额外创建了一个没有绑定v-model的图片数组,只要删除照片,这个额外的数组的值也一样会被改变成e
我现在不能用pictureUrlList 这个名字,用pictureUrlList 2就不会被赋值,还是希望官方人员看看这是个什么问题。
针对您提到的uni-app中关于uni-file-picker
组件的BUG,由于我无法直接访问您的具体错误日志或项目代码,我将提供一个常见的uni-file-picker
组件使用案例,并附上一些调试和排查问题的思路,希望能帮助您定位并解决问题。请注意,实际代码可能需要根据您的具体需求和BUG情况进行调整。
uni-file-picker
组件使用案例
首先,确保您已经在项目中正确安装并引入了uni-file-picker
组件。以下是一个简单的使用示例:
<template>
<view>
<uni-file-picker
@change="handleFileChange"
:count="5"
:mode="['image']"
:limit="20 * 1024"
/>
<view v-for="(file, index) in files" :key="index">
<image :src="file.url" style="width: 100px; height: 100px;"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
files: []
};
},
methods: {
handleFileChange(e) {
this.files = e.detail.files;
}
}
};
</script>
调试和排查思路
-
检查组件引入:确保
uni-file-picker
组件已经正确安装并在页面中引入。 -
查看控制台日志:运行项目,查看控制台是否有更详细的错误信息。错误信息通常会给出一些线索,比如是属性设置错误、事件监听失败还是其他问题。
-
检查事件监听:确保
@change
事件已经正确绑定,并且handleFileChange
方法能够正常接收事件参数。 -
属性设置:检查
uni-file-picker
组件的属性设置,如count
、mode
、limit
等,确保它们符合组件的要求。 -
文件权限:如果是在小程序或App中,检查是否有足够的文件读写权限。
-
版本兼容性:检查
uni-app
和uni-file-picker
组件的版本是否兼容。有时候,组件在新版本的uni-app
中可能会有一些不兼容的改动。 -
简化测试:尝试简化代码,只保留最基本的
uni-file-picker
组件和事件监听,看看问题是否依然存在。
如果以上步骤仍然无法解决问题,建议您查阅uni-app
和uni-file-picker
组件的官方文档,或者在相关社区和论坛中寻求帮助。在寻求帮助时,提供详细的错误信息和代码示例将有助于他人更快地定位问题。