如何在没有 _rowVariant 的情况下动态更改 table 行的颜色?

How to change color of table row dynamically without _rowVariant?

我正在使用 bootstrap-vue table 来显示我从 JSON 检索的信息。我收到的一个信息是一个名为 "Status" 的整数,我想根据这个变量更改整行的颜色,例如,如果 Status 等于 1,则行为绿色。 ]

在 bootstrap-vue 的 documentation 中,它根据项目数组数据中每个元素内的 _rowVariant 对象显示行更改颜色,但是如何更改行的颜色在我的项目数组中没有这个对象?如果不可能,我如何将这个变量插入到数组的每个对象中?

这是关于 table 内容的代码:

<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>

您可以使用计算属性向项目列表添加额外字段:

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 table.[=15=中查看tdClassthClassthStyle ]

<b-table :tbody-tr-class="rowClass"></table>标签中添加:tbody-tr-class="rowClass"并在方法中添加rowClass

methods: {
  rowClass(item, type) {
    if (!item || type !== 'row') return
    if (item.user_id == this.$auth.user.id) return 'table-success'
  }
}