arrays - 访问单个 JSON 数组项并动态用于博客文章
问题描述
我正在构建一个简单的 Nuxt JS 博客,blog.json
其中包含一个包含博客文章数组的文件,其中包含:
- 标题(字符串)
- 正文(HTML 标记)
- 创建日期)
我将很快附上这个格式。我知道如何遍历每个数组项并将其显示在页面上,并且我对Nuxt JS 中的动态路由也有基本的了解和一些基本经验。
我目前面临的问题是我需要能够访问单个数组项并将它们用作博客文章,例如:博客文章的标题pages/blog/_slug
在哪里_slug
,连字符+全部小写自动。
我想知道如何在我的示例中访问例如Winter 博客文章,并能够mysite.com/blog/winter-blog-post
使用以下 JSON 格式:
{
"blogs": [
{
"title": "Summer blog post",
"body": "<div class=\"post\">My blog content</div>",
"created": "2019-03-14 10:08:00"
}
{
"title": "Winter blog post",
"body": "<div class=\"post\">My blog content</div>",
"created": "2019-03-15 10:08:00"
},
{
"title": "Spring blog post",
"body": "<div class=\"post\">My blog content</div>",
"created": "2019-03-16 10:08:00"
}
]
}
我本质上希望能够访问mysite.com/blog/winter-blog-post
并让它使用该特定数组项中的内容。
解决方案
我假设您的页面设置正确并且可以到达/blog/_slug
,因此实际上只需传递所需的参数并根据需要进行转换。在 blog.vue 中,您将拥有您的帖子列表,单击某些内容将导航到整篇文章。该点击事件将触发一个方法,您可以在其中操作标题并将其用作参数。因此,如果您有一个“阅读更多...”按钮,您将分配@click="readMore(blog.title)"
给该按钮。
然后在您的方法中,您采用传递的“标题”参数,根据需要进行更改,并触发路线更改。
methods: {
readeMore(title) {
let passedTitle = title.toLowerCase()
passedTitle = passedTitle.replace(" ", "-")
this.$router.push('/blog/' + passedTitle)
}
}
然后在您的 _slug.vue 中获取传递的参数,将其更改回来并使用它来查找您的文章。
export default {
asyncData({params, $axios }) {
let title = params.passedTitle.replace("-", " ")
let oldTitle = title.charAt(0).toUpperCase() + title.slice(1)
// make your query however you do, if with axios...
$axios.get('/posts', {
params: {
title: oldTitle
}
})
//or if its a vuex state item...
//let post = this.$store.state.posts.find((p) => p.title === oldTitle)
return post
},
}
推荐阅读
- javascript - JS 根据表单上选择的年龄显示消息
- docker - 在容器中升级 Jenkins 会丢失 SAML / SSO 配置
- azure-data-factory - 试图了解 Azure ADF 的 PS Get-AzDataFactoryV2TriggerSubscriptionStatus/Remove
- c++ - 是否有最佳方法在 C++ 中的字符串中查找具有重复模式的子字符串?
- php - 需要向现有的 laravel 站点添加一个简单的博客
- python - 如何使用 Discord.py 设置机器人的自定义状态
- sql - 如何删除 SQL 数据库中存在 account_id 重复项的行?
- java - 如何在不同的计算机上而不是在同一个 WiFi 上的两个 Java 应用程序之间进行通信
- javascript - 在 javascript 中用 fdf 数据填充 html
- c# - 为什么来自 ASP.net Core 2.2 的 SOAP 调用返回空结果?