如何在 VueJs 中 return 来自 v-data-table 的行的 id

How to return id of a row from v-data-table in VueJs

我目前正在努力从每一行中返回特定字段的 ID。我需要此 id 以将其用作函数的参数,该函数将在操作按钮中用于删除行。 这是我的 table 模板的样子:

       <template v-slot:top>
            <v-toolbar flat>
              <v-toolbar-title>Publicații</v-toolbar-title>
              <v-divider class="mx-4" inset vertical> </v-divider>
              <v-text-field
                v-model="search"
                append-icon="mdi-magnify"
                label="Caută"
                single-line
                clearable
                class="shrink"
                hide-details=""
              ></v-text-field>
              <v-divider class="mx-4" inset vertical> </v-divider>
              <v-btn
                color="orange"
                v-on:click="
                  changeRoute();
                  arataDialogEditare = true;
                "
                v-show="arataBtnAdaugare"
                >{{ txtBtnAdaugaNou }}
              </v-btn>
            </v-toolbar>
          </template>
          <template v-slot:[`item.actiuni`]>
            <v-btn color="primary" fab x-small elevation="2">
              <v-icon>edit</v-icon>
            </v-btn>

            <v-btn
              v-on:click="deletePublication()"
              color="primary"
              fab
              x-small
              elevation="2"
            >
              <v-icon>delete_forever</v-icon>
            </v-btn>
          </template>
        </v-data-table>
      </template>

这就是我的 headers 的样子(我的 headers 是动态加载的,这就是为什么我有多个):

    headers: [],
    headersInitial: [
      {
        text: "Id publicatie",
        value: "ID",
      },
      {
        text: "Tip publicație",
        value: "tipPublicatie",
      },
      {
        text: "Nume publicație",
        value: "titluPublicatie",
      },

      {
        text: "An publicație",
        value: "an",
      },
      {
        text: "Actions",
        value: "actions",
        sortable: false,
      },
    ],
    headersFaraTipPublicatii: [
      {
        text: "Id publicatie",
        value: "ID",
      },
      {
        text: "Nume publicație",
        value: "titluPublicatie",
      },

      {
        text: "An publicație",
        value: "an",
      },
      {
        text: "Actions",
        value: "actions",
        sortable: false,
      },
    ],
    publicatii: [],
    publicatiiCuFiltru: [],

这就是我将数据输入 table 的方式:

initialize() {
      this.headers = this.headersInitial;
      axios.get("https://localhost:44349/api/items/ReturnarePublicatii").then((returnPub) => {
        this.publicatii = returnPub.data;
        this.publicatiiCuFiltru = returnPub.data
      });
    },

这是我的删除函数:

deletePublication() {
      let ID =  this.headersInitial.ID
      if (confirm('Are you sure you want to delete the record?')) {
        axios.get("https://localhost:44349/api/items/StergereItem/" + ID).then((returnPub) => {
        this.publicatii = returnPub.data;
        this.publicatiiCuFiltru = returnPub.data
        });
      }
    },

每当我尝试删除记录时,都会出现此错误:“未捕获(承诺)错误:请求失败,状态代码为 400”。我怎样才能让它发挥作用?

let ID =  this.headersInitial.ID

this.headersInitial 是一个数组 - 它没有 属性 ID

您的 deletePublication() 方法需要接收行的 ID 作为参数(因为它可以针对不同的行始终使用不同的 ID 调用)

这就是 Vuetify 将实际行作为 prop 传递到 item 槽中的原因。将 v-slot:item.actiuni 替换为 v-slot:item.actiuni="{ item }",如 example 中所示。 item 是对象(当前行),您可以在处理程序中将其用作 v-on:click="deletePublication(item.ID)