- テーブル内のいずれかのフィールドの値に基づいて v-data-table の行に色を付けようとしています。
- ここや他の場所で提供されているすべてのソリューションを試し、さらにいくつか試してみました。
- 現在のバージョンの Vuetify (2.3.9) を実行しています
- すべてをリロードし、ブラウザのキャッシュと Cookie をクリアしました。
- スロットを使用して、または使用せずに試しました。
- 私のアプリケーションは v-app でラップされています
== スロットなし ==
<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;
}
結果:
- クラスは適用されません。
- item-class="jobGreen" (つまり、リアクティブではない) の使用も失敗します
- jobGreen クラスを v-data-table に適用すると (つまり、class='jobGreen')、期待どおりに動作します
== スロットの使用 ==
(簡体字)
<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" }
}
OK、これは機能しますが、テーブルの最初の行にはクラスが適用されていません! 別のレコードが上になるようにテーブルを並べ替えても状況は変わらないため、データとは関係ありません。このメソッドは、テーブルの各行に対して呼び出されています。