javascript - Vue.js,v-bind 上多个类的选项

标签 javascript html vue.js vuejs2 vue-component

我需要一些帮助来弄清楚如何为 v-bind:class 提供多个选项。

我的 Uno 游戏在遍历您的纸牌时需要查看对象列表中的纸牌颜色。 ([{ Color: green, Value: 6}] 并确定卡片的文本颜色。

这是我到目前为止的想法:

Vue.js

getClass: function(card){
            var result = [];
            console.log(card);
            if (card.Color == "red"){
                result.push('red');
            }else if (card.Color == "green"){
                result.push('green');
            }else if (card.Color == "blue"){
                result.push('blue');
            }else if(card.Color == "yellow"){
                result.push('yellow');
            }
            console.log(result);
            return result;
        },

HTML

<ul id="myCards">
        <button id="myCard" v-for="card in myCards" v-bind:class="getClass(card)" 
         @click="playCard(card)">
         {{card.Color}} {{card.Value}}
        </button>
</ul>

CSS

ul{
    text-align: left;
}
#myCards{
    padding: none;
}
#myCard{
    display: inline-block;
    height: 100px;
    width: 70px;
    border: 1px solid black;
    color: black;
    border: 2px solid black;
    border-radius: 6px;
    background-color: white;
    color: black;
    vertical-align: middle;
    margin: 5px;
}
.red{
    color: red;
}
.green{
    color: green;
}
.blue{
    color: blue;
}
.yellow{
    color: yellow;
}

最佳答案

因为卡片对象中有一个名为Color 的属性,所以您可以使用style object syntax。而且您不需要为每种颜色定义类:

<ul id="myCards">
        <button id="myCard" v-for="card in myCards" 
         @click="playCard(card)">
         {{card.Color}} {{card.Value}}
        </button>
</ul>

Vue.config.devtools = false;
Vue.config.productionTip = false;

let app = new Vue({
  el: "#app",

  data() {
    return {
      myCards: [{
          Value: 'card 1',
          Color: 'red'
        },
        {
          Value: 'card 2',
          Color: 'blue'
        },
      ]

    }
  },
  methods: {


  }
})
ul {
  text-align: left;
}

#myCards {
  padding: none;
}

#myCard {
  display: inline-block;
  height: 100px;
  width: 70px;
  border: 1px solid black;
  color: black;
  border: 2px solid black;
  border-radius: 6px;
  background-color: white;
  color: black;
  vertical-align: middle;
  margin: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <ul id="myCards">
    <button id="myCard" v-for="card in myCards" :style="{color:card.Color}">
         {{card.Value}}
        </button>
  </ul>
</div>

关于javascript - Vue.js,v-bind 上多个类的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61148196/

相关文章:

javascript - jQuery/Javascript 链接会成为解决方案吗?

javascript - 我怎样才能在队列中的动画效果期间仍然能够切换

javascript - Knockout.js 返回未定义

javascript - 加载页面时更改光标

html - 如何将代码作为文本包含在 HTML 页面中

javascript - 显示隐藏按钮时未内联

javascript - 如何保证 jQuery $ 被初始化?

javascript - 如何在 Vue.js 2 中导出路由器实例

javascript - 如何等待Firebase存储图像上传,然后运行下一个函数

laravel - 在 vuejs spa 和 laravel api 中谷歌登录