如何在多个按钮Vue中改变一个按钮的颜色

How to change color one button in many button Vue

我只想更改 5 个按钮中选择的 1 个按钮的颜色。

<button
      class="hover:bg-brand-blue  hover:text-white focus:bg-brand-blue focus:text-white"
      @click="say(item.message)"
    >
      <span class="text-sm ">{{ item.message }}</span>
 </button>

在数据中

data() {
return {
  reason: '',
  items: [
    { message: '1' },
    { message: '2' },
    { message: '3' },
    { message: '4' },
    { message: '5' }
  ]
};

},

在 js 中

methods: {
say: function(message) {
  this.reason = message;
},

当我选择颜色并更改时,但是当我将文本放入文本区域时,所选按钮颜色消失了。 我使用 css 顺风

您可以使用 class 绑定来实现:https://vuejs.org/v2/guide/class-and-style.html#Object-Syntax

new Vue({
  el: "#app",
  data() {
    return {
      reason: '',
      items: [
        { message: '1' },
        { message: '2' },
        { message: '3' },
        { message: '4' },
        { message: '5' }
      ]
    }
  },
  methods: {
    say: function(message) {
      this.reason = message;
    }
  }
})
<link href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.0.3/tailwind.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <button
    v-for="item in items"
    :key="item.message"
    class="bg-blue-400 hover:bg-blue-500 px-6 py-2 rounded border m-2"
    :class="{
      'bg-blue-900': item.message === reason
    }"
    @click="say(item.message)"
  >
    <span class="text-sm ">{{ item.message }}</span>
 </button>
</div>