如何格式化Vuetify数据表日期列?

Kav*_*404 31 javascript vue.js vuejs2 nuxt.js vuetify.js

我有一个使用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>
Run Code Online (Sandbox Code Playgroud)

Bou*_*him 63

你应该使用一个custom row cell

<v-data-table :headers="headers" :items="logs">
  <template v-slot:item.createdOn="{ item }">
    <span>{{ new Date(item.createdOn).toLocaleString() }}</span>
  </template>
</v-data-table>
Run Code Online (Sandbox Code Playgroud)

  • 您可能有一个拼写错误,我需要使用单数 item.createdOn 作为 v-slot 属性,复数 items.createdOn 不起作用。 (4认同)

小智 9

我找到了一种使用动态插槽名称和标头对象中的函数来格式化单元格值的方法:

<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>
Run Code Online (Sandbox Code Playgroud)

在 vuedata属性中我做了:

headers: [
    ...
    { text: 'Value for example', value: '10000', formatter: formatCurrency },
    ...
]
Run Code Online (Sandbox Code Playgroud)

最后在methods道具中我做了:

formatCurrency (value) {
    return '$' + value / 100
},
Run Code Online (Sandbox Code Playgroud)

这是一个沙箱,可以查看它的运行情况:https : //codesandbox.io/s/vuetify-datatable-value-formatter-jdtxj

编辑:在这种特定情况下,您可以使用momentjs或 javascript 的Date()