【发布时间】:2020-05-28 01:52:36
【问题描述】:
我的单页网站有简单的组件结构:
<template>
<div id="app">
<header />
<section-about />
<section-warranty />
<section-advantages />
<section-service />
<section-review />
<footer />
<menu />
</div>
</template>
现在我想在菜单组件中列出所有网页块(文章部分)。
当然,我可以手动编写此列表,但我想知道是否可以解析我的所有组件以获取某些键,然后从中生成列表。这样我的菜单列表将基于组件,并且如果我添加一些新的文章组件或删除一个组件,它将自动更新。
即Warranty.vue组件:
<template>
<section class="article warranty">
...blah blah blah...
</section>
</template>
<script>
export default {
data() {
return {
article-key: 'warranty', // <-- key for parsing
article-title: 'Warranty'
}
}
}
</script>
然后其他文章组件同理……
现在是我的Menu.vue 组件:
<template>
<ul class="menu">
<li v-for="(article, index) in articles" :key="index">
<a href="#">{{ article.title }}</a>
</li>
</ul>
</template>
<script>
export default {
data() {
return {
articles: []
}
},
methods: {
parseComponents() {
this.articles = ... <-- for each Vue component if has article-key data then return
}
},
created() {
parseComponents()
}
}
</script>
或者我应该将所有文章移动到单独的文件夹中吗?这可以用 Vue 制作吗?
【问题讨论】:
-
如果所有可能的组件都是给定父组件的子组件 - 您可以在父组件中使用
this.$children枚举它们。否则,您将不得不从根 Vue 实例开始遍历整个组件层次结构 - 您将只能枚举活动组件,但不能枚举隐藏在v-if后面的组件。
标签: javascript vue.js vue-component