javascript - 单击带有模板行的 v-data-table 中的行
问题描述
当我添加模板行(以便它们根据条件具有特殊格式)时:
<v-data-table
:headers="headers"
:items="desserts"
:items-per-page="5"
class="elevation-1"
@click:row="clickedHandle"
>
<template v-slot:item="props">
<tr v-if="props.item.name.includes('Fro')">
<td>{{ props.item.name }}</td>
<td v-for="itemx in myheaders">{{ toThousands(props.item[itemx]) }}</td>
</tr>
<tr v-else>
<td v-for="itemx in props.item">{{ itemx }}</td>
</tr>
</template>
</v-data-table>
应该在行单击时调用的函数clickedHandle
根本不会启动。为什么呢?
这是您可以检查此行为的示例: https ://codesandbox.io/s/vuetify-playground-forked-lro4w?file=/src/layout.vue
该表似乎根本没有对行点击做出反应。
clickedHandle(value) {
console.log(value);
},
clickedHandle
应该在行点击时记录一些值。
解决方案
v-data-table
像在行自定义文档中那样单独自定义每个单元格,而不是整行。您可以使用 av-for
来动态定位您想要的单元格插槽(与您的myheaders
数组一起):
<template v-for="header in myheaders" v-slot:[`item.${header}`]="props">
<template v-if="props.item.name.includes('Fro')">
{{ toThousands(props.item[header]) }}
</template>
<template v-else>
{{ props.item[header] }}
</template>
</template>
您可以通过在计算中提前准备数据来避免这种槽和过滤器的复杂性。
这是一个更新的CodeSandbox
推荐阅读
- fabricjs - FabricJS - 运行 toDataURL 时“可能无法导出受污染的画布”JS 错误
- c# - C# HttpWebResponse 上传 PDF 不起作用/适用于 word 文档
- php - 使用 php 在 HTML 表中显示 sql 数据
- javascript - 为多个表设置点击事件处理程序
- tensorflow - 使用 Google Cloud ML 进行分布式训练 DeepLabv3+
- spring-boot - Spring Boot 2:使用 hibernate-jpamodelgen 时出现重复注释问题
- javascript - 以编程方式触发下拉“onChange”
- python - 如何在while循环中填充空字典,时间戳作为键和值
- python - 在一次迭代Python中修改文件中的多个位置
- c++ - 反向素数