Vue js条件数据v

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

这里是我的代码:

<article class="project-card" 
        v-for="item in en.projects" 

和:

import fr from '../assets/datas/fr.json'
import en from '../assets/datas/en.json'

export default {
  data () {
    return {
      languageActive: 'en',
      en: en,
      fr: fr,

如果languageActive是'en',我想在v-for中使用'en.projects',

如果languageActive是'fr',我想在v-for中使用'fr.projects',

但是我读到我们不能在v-for中使用v-if。

您知道如何执行此操作吗?谢谢!

javascript vue.js nuxt.js
3个回答
0
投票

如果将语言存储为对象,如下所示:

data() {
  return {
    langs: { en: en, fr: fr }, // or { en, fr } ;)
    languageActive: 'en',
  }
}

您应该能够像这样键入它:

<article class="project-card" v-for="item in langs[languageActive].projects" 

0
投票

languageActive放在方括号中,以便它将访问en属性:

<article class="project-card" v-for="item in [languageActive].projects" 

import fr from '../assets/datas/fr.json'
import en from '../assets/datas/en.json'

export default {
  data () {
    return {
      languageActive: 'en',
      en: en,
      fr: fr,

0
投票

您可以在v-for中使用三元运算符,如下所示:

<div
      v-for="(item, index) in languageActive === 'en' ? en.projects : fr.projects"
      :key="index">
    {{ item }}
</div>

这里的简单示例:https://codesandbox.io/s/pensive-darkness-bn55w?file=/src/App.vue

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