Мне нужно, чтобы при добавление фотографии, отображалось сразу же фотография которую добавили. То есть добавили одну фотографию, она отобразилась, добавили вторую - она отобразилась следующая и т.д. Вот как делал я:
<input type="file" multiple class="form-control" @change="fieldChange">
vue:
fieldChange(e){
let selectedFiles=e.target.files;
for(let i=0;i<selectedFiles.length;i++){
this.attachments.push(selectedFiles[i]);
}
for(let i=0;i<this.attachments.length;i++){
var myIt = this.attachments[i];
}
this.createImages(myIt);
},
createImages(file) {
var reader = new FileReader();
reader.onload = (e) => {
this.images = e.target.result;
};
reader.readAsDataURL(file);
},
Тут отображение фото:
<img class="img-responsive" :src="images" >
Так вот, проблема в том, что я загружаю фотографию, высвечивается первая, потом снова, загружаю вторую - и первая превращается во вторую фотографию, то есть все фотографии становятся последней. Помогите пожалуйста, как можно грамотнее переделать, чтобы высвечивались все загруженные фотографии
Для того, чтобы отобразить список изображений, необходимо этот список записать, например, в массиве.
Для отображения списка изображений используется цикл v-for.
Пример реализации:
var container = new Vue({
el: '#app',
data: function() {
return {
images: [],
attachments: [],
}
},
methods: {
fieldChange(e) {
let selectedFiles = e.target.files;
for (let i = 0; i < selectedFiles.length; i++) {
this.attachments.push(selectedFiles[i]);
}
for (let i = 0; i < this.attachments.length; i++) {
var myIt = this.attachments[i];
}
this.createImages(myIt);
},
createImages(file) {
var reader = new FileReader();
reader.onload = (e) => {
this.images.push(e.target.result);
};
reader.readAsDataURL(file);
},
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.runtime.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>
<div id=app>
<input type="file" multiple class="form-control" @change="fieldChange">
<img v-for="(image, index) in images" :key="`image-${index}`" class="img-responsive" :src="image">
</div>
jsfiddle: https://jsfiddle.net/Nic34/57xfesja/
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости