单选模式下的Vuetify数据表,选择一行选择所有其他行

Pio*_*zek 7 datatable select vue.js vuetify.js

我正在尝试选择表中的一行并发出所选项目。

选择一个将选择所有对象,但仅将第一个遇到的对象保存到模型中(作为selected变量)。

你有什么想法吗,我做错了什么?

在此输入图像描述

<template>
  <v-data-table
    :headers="headers"
    :items="items"
    :search="search"
    :loading="loading"
    v-model="selected"
    single-select
    show-select
    :options="{itemsPerPage:5}"
    @item-selected="itemSelected"
  >
    <template v-slot:top>
      <v-toolbar flat>
        <v-text-field
          v-model="search"
          append-icon="mdi-magnify"
          label="Search"
          single-line
          hide-details
        ></v-text-field>
      </v-toolbar>
    </template>

    <template v-slot:item.name="{ item }">{{ item.name }}</template>
  </v-data-table>
</template>

<script>
export default {
  name: "variable-selector",
  props: ["variables", "map", "index"],
  data() {
    return {
      search: "",
      selected: {},
      loading: false,
      items: [],
      headers: [{ text: "Variable name", value: "name", sortable: true }]
    };
  },
  methods: {
    itemSelected(selection) {
      if (selection.value) {
        this.$emit("selected", selection.item); // it always emits var_2 object
      } else {
        this.$emit("selected", null);
      }
    },

    updateItemsList(variables) {
      this.items = Array.from(variables);
    }
  },

  mounted() {
    this.updateItemsList(this.variables);
  },

  watch: {
    variables(newValue) {
      this.loading = true;
      this.updateItemsList(newValue);
      this.loading = false;
    }
  }
};
</script>
Run Code Online (Sandbox Code Playgroud)

Bal*_*aji 4

如果您遇到错误,每个对象应该是唯一的键值,您想手动告诉每个对象是唯一的

只需添加

item-key="table_header_index"//or name 
Run Code Online (Sandbox Code Playgroud)

例如:

<v-data-table
    :headers="headers"
    :items="items"
    show-select
    item-key="table_header_index"  <-------------------add this line
>

</v-data-table>
Run Code Online (Sandbox Code Playgroud)