我已经使用nuxt.js/content建立了一个投资组合项目
我试图只在一页上显示所有需要的内容。
这是我显示内容的方式:
<li v-for="portfolioItem of portfolio" :key="portfolioItem.slug">
<nuxt-link @click.native="setCurrentPortfolioItem(portfolioItem)" :to="`#${portfolioItem.slug}`">
<p class="title">{{ portfolioItem.title }}</p>
</nuxt-link>
</li>
<div v-if="currentPortfolioItem" :id="currentPortfolioItem.slug">{{ currentPortfolioItem.body }}</div >
这是我存储数据的地方,我的设置方法currentPortfolioItem
以及获取数据的方式:
data() {
return {
currentPortfolioItem: {}
}
},
// Fetch all data from Portfolio directory
async asyncData({$content, params}) {
const portfolio = await $content('portfolio')
.only(['title', 'description', 'body'])
.fetch()
return {
portfolio
}
},
methods: {
// Set my current portfolio item
setCurrentPortfolioItem(portfolioItem){
this.currentPortfolioItem = portfolioItem;
}
},
现在我的想法是,当我按下那个nuxt-link
按钮时,我会在它下面打开一个 div,显示我的 .md 文件的内部。
我面临的问题是,从 nuxt/content 文档中,我读出如何显示 .md 文件正文的唯一方法是使用它:
<nuxt-content :document="page" />
但是由于某种原因,我在显示它的任何地方都没有显示任何数据。该元素唯一有效的时间是在单独的_slug.vue
文件中
我尝试探索通过 /content API 发送的对象,我确实得到了一个 Body 对象,但它被分成更小的元素数组,这些元素的变化取决于 .md 文件中使用的内容。像这样:
body: Object
children: Array(15)
0: {__ob__: Observer}
1:
type: "text"
value: "\n"
因此我不确定如何从这里继续,也许有人有一个很好的技巧或想法如何做到这一点?