javascript - 如何改变b表Vue JS中列数据的颜色
问题描述
我正在使用 vue js b-table,我想要实现的是基于 Health_Status/Availability_Status 我想为表格数据添加一些颜色背景。
示例“如果 Health_Status 很重要,我想将其设为红色背景,
我已经通过像这样使用 v-chip 并在其上调用方法的简单引导实现了同样的事情,但我无法用 b-table 实现同样的事情。
<td class="text-sm-left">
<v-chip :color="getColor(item.severity)" dark>{{ item.severity }}</v-chip>
</td>
这是代码片段中不起作用的部分:
.vue
<b-table :items="items" :fields="fields" striped responsive="sm">
<template v-slot:Health_Status="row">
<v-chip
:color="getColor(row.Health_Status)"
dark
>{{ row.item.Health_Status}}</v-chip>
</template>
</b-table>
.JSON
items: [
{ Name:'RO Site', Availability_Status: 'up', Health_Status: 'critical' },
{ Name:'WO Site', Availability_Status: 'down', Health_Status: 'critical' },
{ Name:'PO Site', Availability_Status: 'up',Health_Status: 'critical'},
{ Name:'GO Site', Availability_Status: 'down', Health_Status: 'critical' }
],
#method (return the color code)
methods: {
getColor(Health_Status) {
if (Health_Status === 'critical') return "red";
else return "green";
},
}
#
那么你们能否建议我在这里缺少什么或使用 vue js b-table 完成相同任务的另一种方法。
解决方案
我的猜测是您的插件版本使用了错误的语法。由于它们最近发生了变化,因此如果您使用的是旧版本并查看当前文档,它将不适合您。
下面的代码片段使用需要 Vue2.6.x
和 Bootstrap-Vue的语法2.0.x
。
window.onload = () => {
new Vue({
el: '#app',
data() {
return {
items: [
{ Name:'RO Site', Availability_Status: 'up', Health_Status: 'critical' },
{ Name:'WO Site', Availability_Status: 'down', Health_Status: 'normal' },
{ Name:'PO Site', Availability_Status: 'up',Health_Status: 'normal'},
{ Name:'GO Site', Availability_Status: 'down', Health_Status: 'critical' }
]
}
},
methods: {
getColor(status) {
if(status === 'critical') return "red"
return "green";
}
}
})
}
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css"/>
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>
<script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>
<div id="app">
<b-table :items="items">
<!--
Using the syntax v-slot:cell(field)="{ value }" means you can type value directly instead of doing row.value
-->
<template v-slot:cell(health_status)="{ value }">
<span :style="`color: ${getColor(value)}`">
{{ value }}
</span>
<!-- this should work for you too
<v-chip :color="getColor(value)">
</v-chip>
-->
</template>
</b-table>
</div>
推荐阅读
- spring - Java自定义属性文件在spring中读取整数值
- html - 以下两个代码的优缺点
- windows - 是否可以使用 CFSTR_FILEDESCRIPTOR 拖放创建文件夹?
- spring-integration - 春季集成:无法与动物园管理员进行领导者选举
- gitlab - .gitlab-ci 阶段执行顺序
- android - 如何在 React Native 中重新导入 java 模块
- mysql - 如何对处于“全行”模式 SQL 的数据进行分组和重新排列
- c - 需要帮助纠正我的斐波那契数列代码
- javascript - 在类项目上注册事件并在单击时获取其属性
- spring-boot - 在 pubsub/spring-cloud-gcp-pubsub 中为订阅者重试设置