不同状态下如何改变v-badge的颜色?

Posted

技术标签:

【中文标题】不同状态下如何改变v-badge的颜色?【英文标题】:How to change the color of v-badge in different status? 【发布时间】:2021-07-11 02:16:08 【问题描述】:

我是 Vue.js 的新手。如何将 vuetify 中的徽章更改为不同颜色?我希望“in”状态的徽章显示为绿色,“新鲜”状态显示为黄色,“等待”状态显示为灰色。

https://codepen.io/magooo/pen/wvgjLRb


  name: "Frozen Yogurt",
  calories: 159,
  status: "in", // color yellow
,

  name: "Ice cream sandwich",
  calories: 237,
  status: "fresh", // color green
,

  name: "Eclair",
  calories: 262,
  status: "fresh", // color green
,

  name: "Cupcake",
  calories: 305,
  status: "wait", // color grey

【问题讨论】:

@kissu 非常感谢!但是是否可以在 vue 中使用“watch”通过字符串(例如,in、fresh、wait)来区分颜色,而不是在 types 数组中添加颜色属性?在此先感谢:) 您可以在状态和颜色之间进行映射,是的,但它需要更多代码,不会那么“干净”(因为您使用的是 vuetify 并且它在那里是这样连接的)和性能也会降低。在数组中添加这样的属性有什么问题? 【参考方案1】:

托管解决方案:https://codepen.io/kissu-the-styleful/pen/MWJXBJM?editors=1010

以下是实现它的方法

<template>
  <div id="app">
    <v-app id="inspire">
      <div>
        <v-data-table
          :headers="headers"
          :items="types"
          class="elevation-0 mx-10 my-10"
          :hide-default-footer="true"
        >
          <template #[`body`]=" items ">
            <tbody>
              <tr v-for="item in items" :key="item.name">
                <td> item.name </td>
                <td> item.calories </td>
                <td>
                  <v-badge bordered bottom :color="item.color" dot offset-x="10" offset-y="10"></v-badge>
                   item.status 
                </td>
              </tr>
            </tbody>
          </template>
        </v-data-table>
      </div>
    </v-app>
  </div>
</template>
new Vue(
  el: '#app',
  vuetify: new Vuetify(),
  data () 
    return 
      headers: [
         text: "name", value: "name" ,
         text: "calories", value: "calories" ,
         text: "status", value: "status" ,
      ],
      types: [
        
          name: "Frozen Yogurt",
          calories: 159,
          status: "in",
          color: "yellow",
        ,
        
          name: "Ice cream sandwich",
          calories: 237,
          status: "fresh",
          color: "green",
        ,
        
          name: "Eclair",
          calories: 262,
          status: "fresh",
          color: "green",
        ,
        
          name: "Cupcake",
          calories: 305,
          status: "wait",
          color: "blue-grey",
        
      ]
    ;
  ,
)

基本上使:color="item.color" 动态取决于types 对象。

PS::colorv-bind:color的简写

【讨论】:

以上是关于不同状态下如何改变v-badge的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA代码设置selector不同状态下的背景颜色

UISegmentedControl 值更改时如何仅更改文本颜色?

Xamarin Forms - IOS - 汉堡菜单标题颜色与状态栏不同

android 如何设置TextView中字体在不同状态下的颜色

Android如何设置顶部状态栏颜色(主题)

如何根据不同的 Widget 改变 Widget 的颜色?