【问题标题】:how use vuetify data table with custom pagination and computed data如何使用带有自定义分页和计算数据的 vuetify 数据表
【发布时间】:2020-12-24 11:31:21
【问题描述】:

嗨,我将在我的项目中使用Vuetify data table,但有两个问题。 首先我有一个状态列,在我的数据中它是从 0 到 5 的数字。但是在表上我想显示相关的文本。例如2 表示success。我怎么能做到这一点,因为 vutify 将整个数据作为items prop。如何将状态代码更改为文本? 同样对于分页部分,我有自己的分页逻辑,比如 laravel,我为每个页面发送请求。有什么方法可以将它的分页与我的一起使用,或者我应该隐藏它并为它编写自己的 ui 代码?另外,如果我可以使用它的分页,如何更改分页文本(Rows per page: 1-2 of 2 )?

注意:我使用的是 Nuxt 2.13 和 Vuetify 2.3.9

<template>
  <v-data-table :headers="tblHeader" :items="items" :sort-by="['date',]" :sort-desc="[false, true]" multi-sort class="elevation-1">
    <template v-slot:item.actions="{ item }">
      <v-btn small class="text_main_color theme__btn__p" @click.prevent="moreDetails(item)">{{lang.more_details}}</v-btn>
    </template>
  </v-data-table>
</template>
<script>
  export default {
    props:['items'],
    data () {
      return {
        items: [
          {
            id: 1,
            customerName: 'Moji',
            invoiceNum: "SP-0001",
            invoiceItems: "2",
            date: 1594261254,
            price: 295,
            status: 1 // on browser is should show pending
          },
          {
            id: 1,
            customerName: 'Moji',
            invoiceNum: "SP-0003",
            invoiceItems: "2",
            date: 1594261254,
            price: 295,
            status: 2 // on browser is should show success
          },
          
        ],
      }
    },
    computed:{
      tblHeader(){
        return [
          { text: this.lang.customer_name, align: 'start', value: 'customerName' },
          { text: this.lang.order_datetime, value: 'date' },
          { text: this.lang.num_of_items, value: 'invoiceItems' },
          { text: this.lang.total, value: 'price' },
          { text: this.lang.invoice_number, value: 'invoiceNum' },
          { text: this.lang.status, value: 'status' },
          { text: this.lang.actions, sortable: false },
        ]
      },
      orders(){

      }
    },
    methods:{
      moreDetails(value){
        this.$emit('details',value)
      }
    }
  }
</script>

更新: 我的分页格式是这样的:

{
  items: [
    ... // data from back end
  ],
  pagination:{
    more: true,
    cursor: 21
  }
}

我发送我想要退回的项目数量,例如from 21, i want 20 items 后面给我上面的json。

【问题讨论】:

    标签: vue.js vuejs2 vuetify.js nuxt.js


    【解决方案1】:

    对于状态文本,您可以在 v-data-table 组件中使用以下插槽元素:

    <template v-slot:item.status="{ item }">
      <p>{{ resolveText(item.status) }}</p>
    </template>
    

    在方法中你应该声明resolveText函数:

    resolveText (status) {
      switch (status) {
        case 0: return 'zero'
        case 1: return 'first'
        default: return 'infinity'
      }
    }
    

    关于分页.. 目前没有想法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 2014-01-08
      相关资源
      最近更新 更多