javascript - 如何通过vue js中的slug(也存在于json文件中)从我的json文件中获取文章内容?

标签 javascript vue.js routes vue-router nuxt.js

我的文章的 index.vue 中有链接(在 Nuxt 应用程序中)。当点击一篇文章时,slug 就会添加到 URL 中(这很好用)。我不知道当单击文章链接时如何从 JSON 文件中获取特定文章的内容。更像是我不知道如何在 pages/ArticleContent/_id.vue 中获取特定文章的内容。

pages/index.vue

<template>
<div>
<h1> The Article Hub </h1>
    <div class="list_article">
        <div v-for="article in article_list" :key="article.title_slug">
            <nuxt-link :to="'/ArticleContent/' + article.title_slug">
                {{article.article_name}}
            </nuxt-link>
        </div>
    </div>
</div>
</template>

<script>
import example from '../assets/example_all_articles.json';

export default {
    data () {
    return {
        article_list: example.data.guides,
    }
    }
  }
</script>

我的 JSON 文件包含如下内容:

article_name: Article A
article_id: 1
title_slug: article-a
article_content: This is content of article A

article_name: Article B
article_id: 2
title_slug: article-b
article_content: This is content of article B


article_name: Article C
article_id: 3
title_slug: article-c 
article_content: This is content of article C

等等。

希望得到一些帮助。谢谢!

最佳答案

您应该在 _id.vue 上有类似的内容

<template>
  <div>
    <div v-if="article">
      <h1>{{article.title_slug}}</h1>
    </div>
    <div v-else></div>
  </div>
</template>

<script>
import articles_service from '../assets/example_all_articles.json'

export default {
  data() {
    return {
      article_list: articles_service.data.guides,
      article: null
    }
  },
  asyncData({ params }) {
    return {
      id: params.id
    }
  },
  watch: {
    id: {
      immediate: true,
      handler(id) {
        if (id) {
          this.article = this.article_list.find(f => {
            return f.title_slug === this.id
          })
        }
      }
    }
  }
}
</script>

确保 title_slug 在列表中是唯一的。

关于javascript - 如何通过vue js中的slug(也存在于json文件中)从我的json文件中获取文章内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975113/

相关文章:

php - 在 PHP 中将 MySQL 数据格式化到下一列的最简单方法

javascript - 无法在 Canvas 上添加背景图像

运算符和事件中的 javascript

javascript - 如何在 vue.js 2 上使用 keyup 禁用点?

javascript - 让 Rails javascript 代码变得干燥

css - 如何将 CSS/SCSS 与 Vue 组件文件保持在一起

javascript - 如何更改悬停背景和单击 Bootstrap Vue 下拉项时的背景?

c# - 你能用参数做一些像 RoutePrefix 这样的事情吗?

css - 对不同路线上的组件使用不同的样式?根据路线隐藏和显示数据

c# - 如何在 HtmlHelper.Action(string, string, object) 中指定调用哪个 Controller 的 namespace ?