vue.js - 如何在Vuetify数据表中同时使用v槽:item and v-slot:item. <名称>?

标签 vue.js vuetify.js

我有一个正在使用的相当自定义的Vuetify数据表,其中我用自定义变量覆盖了几列:

<v-data-table
    :headers="headers"
    :items="category.items"
    hide-default-footer
    show-select
    single-select
    sort-by="position"
    sort-desc>
    <template v-slot:item.data-table-select="{ item }">
        <v-icon
            class="handle grab">
            mdi-drag-vertical
        </v-icon>
    </template>

    <!-- Type Edit In Place -->
    <template v-slot:item.generic_type="{ item }">
        <span
            v-if="editableItem !== `type${item.id}Ref`"
            @click="setEditing(`type${item.id}Ref`);">
            {{ item.generic_type }}
        </span>
        <v-text-field
            v-else
            :ref="`type${item.id}Ref`"
            :value="item.generic_type"
            color="primary"
            dense
            hide-details
            type="text"
            outlined
            @blur="updateItem($event.target.value, item, 'generic_type')"
            @change="updateItem($event, item, 'generic_type')" />
    </template>

    // Several others similar to the input above //

</v-data-table>

现在,尽管我正在尝试实现SortableJS,并且需要能够向数据表的每一行添加一个自定义数据属性,以便稍后可以在Sortable函数中引用它。

根据Vuetify docsSome slots will override each other such as: body > item > item.<name> and header/header.<name>.
如何编写自定义表格行,以便可以附加自定义数据属性,以及保留已自定义写入的现有表格列?

最佳答案

经过几天的摸索和大量的Google搜索,我终于找到解决该问题的方法,甚至仍然可以进行排序!希望这对其他人有帮助。

<v-data-table
  class="items-table-container"
  :headers="headers"
  :items="category.items"
  hide-default-footer
  single-select
  sort-by="position"
  sort-desc>
  <template
    v-slot:item="{ item, index }">
      <tr
        :data-category-id="category.id"
        :data-id="item.id">
        <td>
          <v-icon class="handle grab">
            mdi-drag-vertical
          </v-icon>
        </td>

        <!-- Type Edit In Place -->
        <td>
          <span
            v-if="editableItem !== `type${item.id}Ref`"
            @click="setEditing(`type${item.id}Ref`);">
            {{ item.generic_type }}
          </span>
          <v-text-field
            v-else
            :ref="`type${item.id}Ref`"
            :value="item.generic_type"
            color="primary"
            dense
            hide-details
            type="text"
            outlined
            @blur="updateItem($event.target.value, item, 'generic_type')"
            @change="updateItem($event, item, 'generic_type')" />
       </td>

       // Several others similar to the input above //
    </tr>
  </template>
</v-data-table>

本质上,我正在使用v-slot:item,并创建自己的表行和单元格。

关于vue.js - 如何在Vuetify数据表中同时使用v槽:item and v-slot:item. <名称>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59241763/

相关文章:

debugging - 调试 Vue.js SPA 的最佳方式是什么

css - 无论如何要去除阴影,或强制 vuetify 菜单与屏幕左侧完全对齐?

vue.js - 拖动 Vuetify v-data-table 中的列

javascript - Vue中满足一定条件的嵌套值过滤数组

javascript - Vue Router 默认子路由最初未加载

vue.js - 视觉 : How to use store with component?

javascript - 单击 2 次即可使用 Vuetify 在 v-tab 中设置变量

javascript - 如何通过单击 v-list 项 vue + vuetify 来选择 v-radio

vue.js - 最大调用堆栈大小超过Vuetify

javascript - 在与 Vue.js 相同的页面上使用 Knockout.js