首页 > 解决方案 > 如何让 item-class 在 v-data-table 中工作(这样我就可以为一行着色)?

问题描述

== 没有插槽 ==

      <v-data-table 
        :items-per-page="50" 
        :headers="headers" 
        :items="jobs" 
        :height="600" 
        :search="search" 
        :hide-default-footer="true" 
        :item-key="jobs.JobID" 
        :item-class="row_class" 
        mobile-breakpoint="300"  
        no-data-text="No jobs today!" 
        dense 
        > 
      </v-data-table>  

methods: {
    row_class (item) { return "jobGreen" }
         } 

.jobGreen {  
   background-color: lightgreen;
          }

结果:

== 使用插槽 ==

(简化)

<v-data-table>
   <template v-slot:item="{item}">
      <tr :class="row_class(item)">
         <td>
            {{ item.JobNumber }}
         </td>
      </tr>
   </template>
</v-data-table>

methods: {
    row_class (item) { return "jobGreen" }
      } 

好的,这可行,表的第一行从未应用过类!对表格进行排序以使不同的记录位于顶部不会改变任何事情,因此与数据无关。正在为表的每一行调用该方法。

标签: cssvuetify.jsv-data-table

解决方案


试试这个(这是唯一对我有用的东西,但它破坏了一些表格的基本功能):

<template v-slot:body="{ items }">
  <tbody>
    <tr :class="row_class(item)" v-for="item in items" :key="item.<name>">
      <td class="text-start">{{ item.<name> }}</td>
    </tr>
  </tbody>
</template>


推荐阅读