【问题标题】:dynamically call an object property in a v-for loop在 v-for 循环中动态调用对象属性
【发布时间】:2023-04-10 23:51:01
【问题描述】:

所以我又遇到了问题,

我想制作一个表格组件,您可以在其中向组件发送一个数组,它会为您呈现一个表格

我们是这样设置的

<template>
<section class="container">
    <Apptable :search="true" :loader="true" title="User data" :data="users"/>
  </section>
</template>

<script>
import Apptable from "~/components/table.vue";
export default {
  components: {
    Apptable
  },
  data() {
    return {
      users: [
        {
          id: 1,
          name: "Lars",
          Adres: "hondenstraat 21",
          phone: "06555965"
        },
        {
          id: 1,
          name: "John",
          Adres: "verwelstraat 35",
          phone: "06555965"
        }
      ]
    };
  }
};
</script>

我将数据发送到组件并像这样从那里循环

<template>
  <section class="container">
    <h2 v-if="title">{{title}}</h2>
    <input v-if="search" class="search" placeholder="Search">
    <button v-if="loader" class="update" @click="dialog = true">Update</button>
    <table class="table">
      <thead>
        <tr class="tableheader">
          <th v-for="(item, index) in Object.keys(data[0])" :key="index">{{item}}</th>
        </tr>
      </thead>
      <tbody>
        <tr class="userdata" v-for="(item, index) in data" :key="index">
          <td v-for="(name, index) in Object.keys(data[index])" :key="index">{{//TODO: I WANT TO SELECT THE ITEM.DYNAMIC PROPERTY}}</td>
        </tr>
      </tbody>
    </table>
    <loader v-if="loader" :trigger="dialog"/>
  </section>
</template>

<script>
import loader from "~/components/loader.vue";

export default {
  components: {
    loader
  },
  data() {
    return {
      dialog: false
    };
  },
  watch: {
    dialog(val) {
      if (!val) return;
      setTimeout(() => (this.dialog = false), 1500);
    }
  },
  props: {
    data: {
      type: Array,
      required: true
    },
    title: {
      type: String,
      required: false,
      default: false
    },
    loader: {
      type: Boolean,
      required: false,
      default: false
    },
    search: {
      required: false,
      type: Boolean,
      default: true
    }
  }
};
</script>

所以如果你看一下表格。如果我把 {{item}} 放在待办事项的地方,我是否离开了待办事项。我会在我的专栏中得到这个

enter image description here

但我想动态选择对象的键。但如果我把 {{item.name}} 放在待办事项的地方,它不会动态选择键。

所以关键是我想从 v-for 中的对象动态调用一个属性,以便列将获取单元格中的数据。

【问题讨论】:

    标签: vue.js vuejs2 nuxt.js


    【解决方案1】:

    您应该使用item[name] 而不是item.name

    <tbody>
      <tr class="userdata" v-for="(item, index) in data" :key="index">
        <td v-for="(name, nIndex) in Object.keys(data[index])" :key="nIndex">
          {{ item[name] }}
        </td>
      </tr>
    </tbody>
    

    【讨论】:

      猜你喜欢
      • 2023-01-08
      • 2017-09-14
      • 2023-02-22
      • 2021-07-29
      • 1970-01-01
      • 2020-02-14
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多