javascript - Vuejs & Vuetify:有没有办法用来自 vuetify 的数据表循环模板(使用 v-slot 动态)?
问题描述
我有几个带有服务器端分页、搜索字段和可过滤字段的数据表
但是,我希望能够生成一个组件并使用道具来避免修改相同的东西三次
有没有办法使用 vuetify 中的数据表循环模板(使用 v-slot 动态)?
例如 :
<template v-slot:header.id="{ header }">
<div class="pointer border-right pa-2">
<span class="title" @click.prevent="sortBy('id')">
ID
<v-icon class="ml-2">{{icon.id}}</v-icon>
</span>
<v-text-field v-model="searcher.ticket_id.value" type="text"
label="Rechercher..."></v-text-field>
</div>
</template>
<template v-slot:header.name="{ header }">
<div class="pointer border-right pa-2">
<span class="title" @click.prevent="sortBy('name')">
Nom du ticket
<v-icon class="ml-2">{{icon.name}}</v-icon>
</span>
<v-text-field v-model="searcher.ticket_name.value" type="text"
label="Rechercher..."></v-text-field>
</div>
</template>
成为(非功能性):
<template v-for="(item, i) in headers" v-slot:item.text="{ header }">
<div class="pointer border-right pa-2">
<span class="title" @click.prevent="sortBy(item.name)">
{{item.name}}
<v-icon class="ml-2">{{icon[item.name]}}</v-icon>
</span>
<v-text-field v-model="item.searcher" type="text"
label="Rechercher..."></v-text-field>
</div>
</template>
如果我添加key
,我有'<template>' cannot be keyed. Place the key on real elements instead
如果我删除这个我有Elements in iteration expect to have 'v-bind:key' directives
然而,我遇到了几个证明相反的来源
https://vuejs.org/v2/guide/list.html#v-for-on-a-lt-template-gt
vue-language-server :迭代中的元素期望有 'v-bind:key' 指令
谢谢
编辑 20/12:
https://github.com/vuejs/eslint-plugin-vue/issues/1006
如何使用 vuetify 数据表动态创建 v-slot 属性?
这是我的代码:
<template v-for="(head, i) in headers" v-slot:header[header.value]="{header}">
<div :key="i" class="pointer border-right pa-2">
<span class="title" @click.prevent="sortBy('id')">
{{head}} <br> {{header}}
<v-icon class="ml-2">{{icon.id}}</v-icon>
</span>
<v-text-field v-model="searcher.ticket_id.value" type="text"
label="Rechercher..."></v-text-field>
</div>
</template>
不能安装在桌面立柱上
我需要v-slot:header.id="{header}"
用于安装在 id 列上,但我必须id
根据我的循环进行动态
怎么做 ?
谢谢
我找到了
我head: 'header.id'
在我的列表中添加了,所以我可以使用<template v-for="(head, i) in headers" v-slot:[headers[i].head]="{header}">
解决方案
我必须做
<template v-for="(col, i) in filters" v-slot:[`header.${i}`]="{ header }">
就我而言
filters: { 'name': [], 'calories': [] },
推荐阅读
- typescript - 如何在 TypeScript 中获取对象中所有键值对的联合类型?
- mysql - Debian 10 看到连接到端口 3306 的 IP
- javascript - javascript中的API正在返回数据,但没有保存到数组中
- spring - 我如何使弹簧数据投影将作为关系的集合作为参数?
- python - 如何从元组列表中计算元组列表?
- jenkins - Thread.sleep() 在 Jenkins Quiet Down 模式下不起作用
- java - Spring Boot - 支持多个 issuer-uri
- python - Python多线程同步
- hazelcast - 确定 Hazelcast 节点是否拥有地图条目
- java - 浏览器刷新不起作用,spring boot + React