Мне нужно, чтобы при добавление фотографии, отображалось сразу же фотография которую добавили. То есть добавили одну фотографию, она отобразилась, добавили вторую - она отобразилась следующая и т.д. Вот как делал я:
<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/
Есть одна функцияЯ получаю JSON с локалхоста на /receive/ , вывожу данные на страницу при помощи vue
Возникла такая проблемаСайт не хочет корректно отображатся в вебвю
Когда я устанавливаю событие для input keydown, то оно срабатывает после второго нажатия на клавишу, приходится использовать событие keyup, но визуально...