Я считаю, что это относительно уникальная проблема, и поэтому я испытываю трудности при ее решении.
Я создаю решение, подобное файловому менеджеру, в Vue и ищу определенные папки / файлы для отображения уникальной миниатюры (в моем примере, показывающей логотип Creative Cloud, если папка 'Creative Cloud' найдена ). В моем приложении я использую компонент для представления каждого файла.
Файл Vue файла-сетки читается как таковой (извините за беспорядок, я пытался интегрировать несколько различных решений, чтобы увидеть, что прилипает):
<template>
<div id="localMain">
<div id="filesGrid">
<File :fileName="file"
:imageAddress="findImage($event)"
id="file"
v-for="file in files"
:key="file.id"></File>
</div>
</div>
</template>
<script>
import File from './LocalMain/File';
export default {
data() {
return {
creativeCloud: 'static/logos/creative-cloud.svg',
blankThumb: 'static/code.svg',
files: [
'Creative Cloud',
'Documents',
...
],
};
},
components: {
File,
},
methods: {
findImage: function findImage(e) {
/* Get the name of the file/folder, and choose a thumbnail accordingly */
const name = e.target.dataset.fileName;
let image = this.blankThumb;
if (name === 'Creative Cloud') {
image = this.creativeCloud;
} else {
image = this.blankThumb;
}
return image;
},
},
};
</script>
<style scoped>
/* styling */
</style>
Сам файловый компонент выглядит так:
<template>
<div id="file">
<img :src="imageAddress" alt="Logo" id="fileImg" />
<h3 v-if="display">{{ fileName }}</h3>
</div>
</template>
<script>
export default {
data() {
return {
display: false,
};
},
props: {
fileName: String,
imageAddress: String,
},
};
</script>
<style scoped>
/* styling */
</style>
Я прошу прощения за двусмысленность в этом вопросе, но я в замешательстве.