我有一个使用 Vuetify 数据表的简单数据表。列之一是createdOn
(日期时间),我想对其进行格式化。我该怎么办?
<template>
<v-layout>
<v-data-table :headers="headers" :items="logs">
</v-data-table>
<v-layout>
</template>
<script>
headers: [
{ text: "Time", value: "createdOn", dataType: "Date" },
{ text: "Event Source", value: "eventSourceName" },
{ text: "Event Details", value: "eventDetails" },
{ text: "User", value: "user" }
],
items: [],
</script>
答案 0 :(得分:6)
我找到了一种使用动态插槽名称和标头对象中的函数来格式化单元格值的方法:
在 <v-data-table>
中我做了:
<template v-for="header in headers.filter((header) => header.hasOwnProperty('formatter'))" v-slot:[`item.${header.value}`]="{ header, value }">
{{ header.formatter(value) }}
</template>
在 vue data
属性中我做了:
headers: [
...
{ text: 'Value for example', value: '10000', formatter: formatCurrency },
...
]
最后在 methods
道具中我做了:
formatCurrency (value) {
return '$' + value / 100
},
这是一个沙箱,可以查看它的运行情况: https://codesandbox.io/s/vuetify-datatable-value-formatter-jdtxj
编辑:
在这种特定情况下,您可以使用 momentjs
或 javascript 的 Date()
答案 1 :(得分:5)
您应该使用custom row cell
:
<v-data-table :headers="headers" :items="logs">
<template v-slot:items.createdOn="{ item }">
<span>{{new Date(item.createdOn).toLocaleString()}}</span>
</template>
</v-data-table>
答案 2 :(得分:0)
我还使用了带有 v-slot 的全局过滤器:
<v-data-table :headers="headers" :items="logs">
<template v-slot:item.createdOn="{ item }">
<span>{{ item.createdOn | myGlobalDateFilter }}</span>
</template>
</v-data-table>
答案 3 :(得分:0)
在数据表组件Datatable.vue中
<template v-for="slot in slots" v-slot:[`item.${slot.slotName}`]="{ item }">
<slot :name="slot.slotName" :variable="item"></slot>
</template>
export default {
props:
slots:{
type:Array,
default:null
},
和父组件
<Datatable
:headers="headers"
:items="stokhareketleri"
:title="title"
:slots="slots">
<template v-slot:column_name="{ variable }">
<v-chip
color="green"
dark
>
{{variable.column_name}}
</v-chip>
</template>
</Datatable>
data () {
return {
slots:[{
Id: 1, slotName: 'column_name'
}],