我正在使用boots-vue表来显示我从JSON检索的信息。我收到的一个信息是一个名为“ Status”的整数,我想根据此变量更改整个行的颜色,例如,如果Status等于1,则行为绿色。 ]
在bootstrap-vue的documentation中,它根据项目数组数据中每个元素内的_rowVariant对象显示行更改颜色,但是如何在不具有该对象的情况下更改行的颜色项目数组?如果不可能,如何将这个变量插入数组的每个对象中?
以下是有关表格内容的代码:
<b-container fluid>
<b-table hover :items="requests" :fields="fields"
@row-clicked="onRowClicked"
>
<template slot="show_details" slot-scope="row">
<!-- we use @click.stop here to prevent emitting of a 'row-clicked' event -->
<b-button size="sm" @click.stop="row.toggleDetails" class="mr-2">
{{ row.detailsShowing ? 'Hide' : 'Show'}} Details
</b-button>
</template>
<template slot="row-details" slot-scope="row">
<b-card>
<b-row class="mb-2">
<b-col sm="3" class="text-sm-right"><b>Info 1:</b></b-col>
<b-col>{{ row.item.horas_info }}</b-col>
</b-row>
<b-row class="mb-2">
<b-col sm="3" class="text-sm-right"><b>Info 2:</b></b-col>
<b-col>{{ row.item.pdf }}</b-col>
</b-row>
<b-button size="sm" @click="row.toggleDetails">Hide Details</b-button>
</b-card>
</template>
</b-table>
</b-container>
答案 0 :(得分:4)
您可以使用计算出的属性向项目列表添加额外的字段:
computed: {
formartedItems () {
if (!this.requests) return []
return this.requests.map(item => {
item._rowVariant = this.getVariant(item.Status)
return item
})
}
},
methods: {
getVariant (status) {
switch (status) {
case 1:
return 'success'
case 1:
return 'danger'
default:
return 'active'
}
}
}
然后使用HTML代码:
<b-table hover :items="formartedItems" :fields="fields" @row-clicked="onRowClicked">
...
</b-table>
如果您想要更多自定义样式,则可以在bootstrap-vue表中选中tdClass
,thClass
或thStyle
。
答案 1 :(得分:1)
Add `:tbody-tr-class="rowClass"`
in `<b-table :tbody-tr-class="rowClass"></table>` tag
then add rowClass Method in method object like below.
methods: {
rowClass(item, type) {
if (!item || type !== 'row') return
if (item.user_id == this.$auth.user.id) return 'table-success'
}
}