一些背景
我正在构建一个博客,其内容主要来自于NuxtJS内容,它的内容主要来自于降价文件。
如果有帮助,您可以在Github (或已部署的站点这里)上看到我的项目。
我理解如何从/content下的MD文件创建动态页面。
但我不知道如何将其中一个文件的内容注入静态页面。
content/
├── blog/
│ ├── post1.md
│ ├── post2.md
├── privacy/
│ ├── policy.md
│ └── something-else.md
pages/
├── blog/
│ ├── _slug.vue
├── privacy/
│ ├── _slug.vue
├── privacy.vue
├── index.vue使用我当前的方法/知识,我生成了一个基于policy.md的动态页面:
<template>
<article>
<nuxt-content :document="policy" />
</article>
</template>
<script>
export default {
async asyncData({ $content, params }) {
const policy = await $content('privacy', params.slug).fetch()
return { policy }
}
}
</script>但我不想从MD生成动态页面,也不想在路径中使用段塞。
我想获取policy.md的内容,并将它们插入到privacy.vue中--但我不知道如何实现。
我试过的
使用上面的方法是行不通的,但我觉得应该这样做。
console.log(policy)返回[object] [OBJECT]
& console.log(policy.title)返回undefined,这应该告诉我什么?(试图提高我在这里的调试技巧,lol)
为什么这在_slug.vue中起作用,而在page.vue中不起作用?
感觉好像我错过了一些上下文相关的知识:事情是如何工作的/正确的方法是什么。
发布于 2022-09-09 11:31:24
好的,在点击submit之前,我解决了自己的问题,将其添加到静态页面模板中:
<div v-for="policy in policy" :key="policy.title">为什么要这么做?
这是因为asyncData事先不知道将获取多少项,并创建一个数组->,因此当policy.title不在数组的位置X处时,policy.title是未定义的(我猜,v-for给了我们?)。
我认为给出一个文件的路径而不是一个dir,比如:
const policy = await $content('privacy/policy.md', params.slug).fetch()会清楚地表明这是一个单一的项目,但当我尝试之前的时候,这并不适用于我。这是如何工作的呢?
我觉得这可能不是解决问题的好办法。我的意思是,I知道在这个dir中只有一个文件,但是是的,必须有更合适的方法来做到这一点吗?
https://stackoverflow.com/questions/73661291
复制相似问题