Добрый день.
Пишу код мульти загрузки картинок. Картинки грузятся все хорошо, но есть один момент. Новые картинки должны появляться в начале списка, соответсвенно я вставляю их в начало массива. И мне как то надо после окончания загрузки картинки, присвоить результат полученный с сервера(миниатюрка там и прочее), за место базового элемента что я добавляю через скрипт в unshift.
Код закоминчен с Vue.set он работал, но я не знаю как сохранить индекс элемента ибо в момент загрузки картинок пользователь можно еще добавить загрузку и все индексы поедут, а так же может удалить какой то элемент. Вот как правильно реализовать такую схему?
Как щас сделано fileInArr = response.data не работает, но оно и понятно там в доке написано что работать не будет.
uploadFiles: function ()
{
var files = this.$refs.upload.files;
//выходим если пусто
if(files[0] === undefined){
return;
}
//выводим файлы для загрузки.
for (var i = files.length - 1; i >= 0; i--) {
this.files.unshift({progress: 0, orig_name: files[i]['name']});
this.putFile(files[i], this.files[0]);
}
},
putFile: function(file, fileInArr)
{
var files = this.$refs.upload.files;
var data = new FormData();
data.append('file', file);
var config = {
onUploadProgress: (progressEvent) => {
fileInArr['progress'] =
Math.round( (progressEvent.loaded * 100) / progressEvent.total );
}
}
axios.post(this.params['upload-url'], data, config)
.then( (response) => {
fileInArr = response.data;
//Vue.set(this.files, fiieId, response.data);
});
},