首先回答你的第二个问题:`v-card` 只是一个视觉组件,它可以更容易地创建框(卡片)来显示一些带有标题等的项目。另一方面,`v-form` 转换为`form `html 中的标签。您可以使用带有或不带有“表单”的“输入”,但使用它有其自身的好处,但您可以将其省略。
对于第一个问题:有很多比 `v-dialog` 更好的编辑或更新 `v-data-table` 的方法,你可以而且应该几乎总是避免将它用于该建议。最常见和更好的方法之一是使用 `v-alert` 和 `value` 和 `transition` 像
this ,但是如果你想从你的 `v-data-table` 更新一行,我建议使用您自己的具有 `v-text-field` 的模板,而不是 `td` `v-if` 中的简单 `div`,它与每个可以通过按钮切换的对象上的布尔值相关联。它会是这样的:
模板:
<v-data-table
:headers="headers"
:items="items"
>
<template v-slot:item.myEditableCol="{ item }" v-if="item.beingEdited">
<v-text-field v-model="item.myEditableCol" />
</template>
<template v-slot:item.action="{ item }">
<v-icon
class="mx-1"
@click.stop="item.beingEdited = !item.beingEdited"
>
{{item.beingEdited?'mdi-check':'mdi-circle-edit-outline'}}
</v-icon>
</template>
</v-data-table>
和脚本:
headers: [
{
text: "ID",
align: "start",
value: "id",
},
{
text: "Title",
align: "start",
value: "title",
},
{
text: "Editable",
align: "start",
value: "myEditableCol",
},
{
text: "CRUD",
align: "start",
value: "actions",
},
],
items: [
{
id: 1,
title: "row1",
myEditableCol: "someValue1",
beingEdited: false,
},
{
id: 2,
title: "row2",
myEditableCol: "someValue2",
beingEdited: false,
},
{
id: 3,
title: "row3",
myEditableCol: "someValue3",
beingEdited: false,
},
],
您基本上可以在 vuetify 中使用 `templates` 和 `v-slot` 获得超级创意。
希望它可以帮助。