【发布时间】:2019-12-12 16:07:30
【问题描述】:
我正在使用 VueJs 上传多张图片。保存各自的 Array 中的 base64 值(将它们存储在 db 中)。 我在那里添加了删除功能,在单击删除按钮时,我找到了该元素的索引并将其从数组中拼接起来。
从数组中删除的单击图像值很好,但它不会改变图像的位置。 视觉上我可以看到最后一张图片被删除了。如何从 Array 中删除图像的值并从 UI 中删除相同的图像?
这里是代码:https://codepen.io/echobinod/pen/GVMOqJ
<div id="app">
<input type="file" multiple @change="onFileChange" /><br><br>
<div class="row">
<div v-for="(image, key) in images">
<div class="col-md-4" :id="key">
<button type="button" @click="removeImage(key)">
×
</button>
<img class="preview img-thumbnail" v-bind:ref="'image' +parseInt( key )" />
{{ image.name }}
</div>
</div>
</div>
</div>
<script>
const vm = new Vue({
el: '#app',
data() {
return {
images: [],
}
},
methods: {
onFileChange(e) {
var selectedFiles = e.target.files;
for (let i=0; i < selectedFiles.length; i++)
{
this.images.push(selectedFiles[i]);
}
for (let i=0; i<this.images.length; i++)
{
let reader = new FileReader(); //instantiate a new file reader
reader.addEventListener('load', function(){
this.$refs['image' + parseInt( i )][0].src = reader.result;
}.bind(this), false);
reader.readAsDataURL(this.images[i]);
}
},
removeImage (i) {
var arrayImages = this.images;
var index = arrayImages.indexOf(arrayImages[i]);
arrayImages.splice(index, i);
}
}
})
</script>
【问题讨论】:
标签: javascript vue.js vuejs2