VueJS:通过v-bind在方法运行中获取动态组件信息
VueJS: Obtaining dynamic component information in method run via v-bind
我认为这是一个相对独特的问题,因此我很难尝试解决它。
我正在 Vue 中创建类似文件管理器的解决方案,我正在寻找某些 folders/files 来显示独特的缩略图(在我的示例中,如果 '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>
对于这个问题的含糊不清,我深表歉意,但我很困惑。
我可能遗漏了一些东西,但为什么不只是 v-bind 以文件名作为参数的方法?
例如。
Parent模板
<File :fileName="file"
:imageAddress="findImage(file)"
id="file"
v-for="file in files"
:key="file.id"></File>
Parent Javascript
findImage: function findImage(name) {
var image = this.blankThumb;
if (name === 'Creative Cloud') {
image = this.creativeCloud;
}
return image;
},
我认为这是一个相对独特的问题,因此我很难尝试解决它。
我正在 Vue 中创建类似文件管理器的解决方案,我正在寻找某些 folders/files 来显示独特的缩略图(在我的示例中,如果 '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>
对于这个问题的含糊不清,我深表歉意,但我很困惑。
我可能遗漏了一些东西,但为什么不只是 v-bind 以文件名作为参数的方法?
例如。
Parent模板
<File :fileName="file"
:imageAddress="findImage(file)"
id="file"
v-for="file in files"
:key="file.id"></File>
Parent Javascript
findImage: function findImage(name) {
var image = this.blankThumb;
if (name === 'Creative Cloud') {
image = this.creativeCloud;
}
return image;
},