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

问题描述 投票:0回答:1

我的文章index.vue中有链接(在Nuxt应用程序中)。单击文章后,该条就会添加到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

依此类推。

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

javascript vue.js routing vue-router nuxt.js
1个回答
0
投票

_id.vue上应该有类似的东西>

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

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

export default {
  data() {
    return {
      article_list: example.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在列表中是唯一的。

© www.soinside.com 2019 - 2024. All rights reserved.