如何为计算对象中的数组使用“ v-for”

时间:2019-05-03 11:46:01

标签: vue.js vuex

我正在创建一个网站来列出我的所有项目。我正在使用Vuex和Firebase存储我的所有数据。

我希望每个项目都有自己的“待办事项列表”。 创建新项目时,创建数组女巫是我的待办事项列表。在Firebase中,它看起来像这样:Screenshot of Firebase

现在,我想显示我的项目列表。首先,我将项目作为计算的道具获得,如下所示:

<script>
export default {

  computed: {
    projects () {
      return this.$store.getters.loadedProjects
    }
  },
  created () {
    this.$store.dispatch('loadProjects')
  },
}

</script>

我可以循环浏览项目并显示每个项目的标题。


我的问题是:如何在计算的道具内部遍历待办事项数组?

<template>
  <div v-for="project in projects" :key="project.id">
    <p>{{ project.title }}</p>
    
    <!-- Looping through todos (array) in an computed prop -->
    <div v-for="(todo, index) in todos" :key="todo.id">
      <p>{{ project.todos[index].title }} </p>
      <p>{{ project.todos[index].completed }} </p>
    </div>
    
  </div>
</template>

试图在v-for中使用计算的prop,但这不起作用。 不知道我是否了解计算属性的含义。我可以在data()内定义project()吗?并将吸气剂链接到数据?

<div v-for="todo in {{project.todos}} :key="todo.id>

1 个答案:

答案 0 :(得分:1)

如果第二个循环位于第一个循环中,则可以通过以下方式访问它:

<template>
  <div v-for="project in projects" :key="project.id">
    <p>{{ project.title }}</p>

    <!-- Looping through todos (array) in an computed prop -->
    <div v-for="todo in project.todos" :key="todo.id">
      <p>{{ todo.title }} </p>
      <p>{{ todo.completed }} </p>
    </div>

  </div>
</template>

在这种情况下,创建循环时,project是数组的单个元素,因此project.todos是该特定项目的待办事项列表。

https://vuejs.org/v2/guide/list.html#Mapping-an-Array-to-Elements-with-v-for