vue.js - Vuetify Datatable - 仅在第一行渲染元素
问题描述
我的一个 vue 项目有问题。我有一个 vuetify 数据表,它使用 mongo 从 .net 核心后端接收数据。它工作得很好,每一行都有一个编辑和删除按钮。但在这种情况下,我需要限制编辑和删除按钮只显示在数据表的第一行。
我已经尝试了很多来自互联网的解决方案,但到目前为止没有一个对我有用。
这是数据表和按钮的代码,分别是:
<v-data-table
:headers="headers"
:items="pacientes"
:search="search"
:page.sync="page"
:items-per-page="itemsPerPage"
hide-default-footer
sort-by="status"
class="elevation-1"
@page-count="pageCount = $event"
>
<template
v-slot:item.edit="{ item }" >
<v-btn
color="blue"
tile
x-large
icon
@click="aprovar(item.nomePaciente, item.idEspera, item.matricula)"
>
<v-icon>mdi-pencil-circle</v-icon>
</v-btn>
</template>
<template
v-slot:item.delete="{ item }"
>
<v-btn
color="red"
x-large
tile
icon
@click="abrirModalDeletar(item.nomePaciente, item.idEspera)">
<v-icon>mdi-delete-circle</v-icon>
</v-btn>
</template>
任何帮助将不胜感激,谢谢!
解决方案
您可以为数组中的项目引入一个布尔属性,我们称之为它isFirst
然后您可以在数据表中监听事件,该事件current-items
返回当前视图中的项目。在此基础上,显示第一行的按钮。所以我建议如下:
<v-data-table @current-items="setFirst" ...... >
和功能:
methods: {
setFirst: function(currItems) {
// first check that actually exists values
if (currItems.length) {
// toggle all to false
currItems.forEach(x => x.isFirst = false)
// just set first to true
currItems[0].isFirst = true;
}
}
},
然后设置v-if
按钮:
<v-btn v-if="item.isFirst" ....>
推荐阅读
- php - Livewire wire:model.defer 在提交时显示空值(第二次)
- python - 区分两个或多个键盘
- html - 如何使用 CSS 而不是 HTML 表示标签来设置元素的样式?
- node.js - 为什么firebase中的'currentUser'和'onAuthStateChanged'总是为空?
- excel - 如何根据下拉列表在单元格上设置值?
- javascript - 将对象字符串转换为javascript中的对象列表
- javascript - 传递道具时切换和构造函数组件(React)更改源
- r - R - 子集()中的逻辑运算符是一个字符串
- python - Python Packaging: user specified file path
- json - VM2233:1 未捕获(承诺中)SyntaxError:JSON 中位置 0 的意外标记 s