Vuetify v-data table 获取索引

Vuetify v-data table get Index

嘿,我是 vue js 的新手,vuetify.In 我的 editProductSave 我想传递另一个变量,它是 table 中行的索引。这是我当前的代码,我将如何实现? table 是使用 vuetify v-data-table

绘制的

完整代码

 <template>
      <v-card>
        <v-data-table
          :headers="tableFields"
          :items="programs"
          :items-per-page="5">
                <template v-slot:[`item._id.$oid`]="{ item }">
                  {{item._id.$oid}}
                </template>
                <template v-slot:[`item.tags`]="props">
                <v-edit-dialog
                  :return-value.sync="props.item.tags"
                  large
                  persistent
                  @save="editProductSave(props.item)">
                  <div>{{props.item.tags.length === 0 ? '' : props.item.tags}}</div>
                  <template v-slot:input>
                    <div class="mt-1 text-h2">
                      Update Tag
                    </div>
                    <v-text-field
                      v-model="props.item.tags"
                      label="Edit"
                      single-line
                      counter
                      autofocus
                    ></v-text-field>
                  </template>
                </v-edit-dialog>
                </template>

<script>
 import tdmApi from "../services/api/Database";

  export default {
    props: ["DatabaseList"],
    computed: {
      totalRows() {
        return this.programs.length;
      },
    },
    created () {
      this.viewTdmDatabase();
    },
    data () {
      return {
        tableFields: [
          {text:'ID',value:'_id.$oid'},
          {text:'Tag',value:'tags'},
        ],
        programs: [],
      }
    },
</script>

试试下面的代码:

     <template v-slot:[`item.tags`]="{props, index}">
                <v-edit-dialog
                  :return-value.sync="props.item.tags"
                  large persistent
                  @save="editProductSave(props.item, index)">
                // ...
                </v-edit-dialog>
    </template>

在脚本中,方法是

methods: {
     editProductSave(item, index) {
        // ...
     }
}

好像vuetify在中没有,所以为了得到它你可以改变v-data-table的结构。

这是一个如何获取每行索引的示例。

https://www.codegrepper.com/code-examples/whatever/vuetify+v-data-table+get+row+index

<template v-slot:item.tags="{item,index}">
         {{index}} //Output index
</template>

上面的代码应该可以工作,确保用对象覆盖它。

您可以简单地将索引添加到计算 属性 中的程序并将其导入数据 table 中,如下所示:

模板

...
<v-data-table
      :headers="tableFields"
      :items="programsComputed"
...

脚本

  export default {
    ...
    computed: {
      totalRows() {
        return this.programs.length;
      },
      programsComputed () {
        return this.programs.map((program, index) => {
          program.index = index;
          return program;
        })
      }
    },
    ...
    data () {
      return {
        tableFields: [
          {text:'ID',value:'_id.$oid'},
          {text:'Tag',value:'tags'},
        ],
        programs: [],
      }
    },

在您的 editProductSave(item) 中,您只需调用 item.index