Vue.js
- 9 ответов
- 0 вопросов
8
Вклад в тег
<input onchange="handleChange" type="file" />
<!-- как-то циклом выводи Store.files -->
<span>file 1</span>
<button onclick="(e) => removeFile(0)">remove file</button>
<span>file 2</span>
<button onclick="(e) => removeFile(1)">remove file</button>
const Store = {
files: [], // какое-то хранищие файлов, для примера так
}
// при выборе файлов, мы будем их добавлять
function handleChange(e) {
// если не выбрали файл и нажали отмену, то ничего не делать
if (!e.target.files.length) {
return;
}
// создаем новый массив с нашими файлами
const files = Object.keys(e.target.files).map((i) => e.target.files[i]);
addFiles(files); добавляем файлы в хранилище
// очищаем input, т.к. файл мы сохранили
e.target.value = '';
}
function addFiles(files) {
// добавляем файлы в общую кучу
Store.files = Store.files.concat(files);
}
// удалить файл из хранилища, например по индексу в массиве
function removeFile(index) {
// удаляем файл по индексу
Store.files.splice(index, 1);
}
// если надо послать файлы на сервер, формируем FormData с файлами
// const formData = getFilesFormData(Store.files);
function getFilesFormData(files) {
const formData = new FormData();
files.map((file, index) => {
formData.append(`file${index + 1}`, file);
});
return formData;
}
const xArray = [-1, 0, 1, 2, 3, 4, 5, 11];
let xArray2 = xArray.filter((x) => {
return 0 <= x && x <= 10;
});
xArray2; // [0, 1, 2, 3, 4, 5]
export function declOfNum(num, titles) {
const cases = [2, 0, 1, 1, 1, 2];
return titles[(num % 100 > 4 && num % 100 < 20)
? 2
: cases[(num % 10 < 5) ? num % 10 : 5]
];
}
declOfNum(3, ['день', 'дня', 'дней']) // дня