如何在vue.js中动态切换3个或更多字体超赞的图标

时间:2020-01-22 09:53:16

标签: javascript html css vue.js font-awesome

我正在用vue创建一个石头剪刀布迷你游戏,我试图找到一种方法来切换变量之类。例如:

<template>
  <div id="human">
    <div class="text-center">
      <div class="h2 mb-5">Human</div>

      <!-- PLEASE CHECK BELOW HERE -->
      <i class="play-hand far fa-hand-{{ iconName }}"></i>
      <!-- OR -->
      <i class="play-hand far {{ icon }}"></i>

      <div class="h3 mt-4">{{ activeHand }}</div>
      <div class="row select-hand mt-4">
        <div class="col-md-4">
          <i class="far fa-hand-rock" @click="setHand(hands[0])"></i>
        </div>
        <div class="col-md-4">
          <i class="far fa-hand-paper" @click="setHand(hands[1])"></i>
        </div>
        <div class="col-md-4">
          <i class="far fa-hand-scissors" @click="setHand(hands[2])"></i>
        </div>
      </div>
    </div>
  </div>
</template>
我标有评论。我很确定你能做到我想做的。 我不想为此使用document.querySelector()


<script>
export default {
  data: () => {
    return {
      activeHand: 'Choose a Hand',
      hands: [
        {
          name: 'Rock',
          strength: 'scissor',
          weakness: 'paper',
          icon: 'fa-hand-rock'
        },
        {
          name: 'Paper',
          strength: 'rock',
          weakness: 'scissor',
          icon: 'fa-hand-paper'
        },
        {
          name: 'Scissor',
          strength: 'paper',
          weakness: 'rock',
          icon: 'fa-hand-scissors'
        }
      ]
    }
  },
  methods: {
    setHand (hand) {
      console.log(hand.name)
      this.activeHand = hand.name
      console.log(hand.icon)

      let playHandSelector = document.querySelector('.play-hand')
      playHandSelector.classList.remove(this.activeHand.includes(hand))
      playHandSelector.classList.add(hand.icon)
    }
  }
}
</script>

<style lang="scss">
#human .far {
  transform: rotate(90deg);
}
</style>

必须有一种通过名称动态切换类的提示方法。也许没有正确/错误的切换?

1 个答案:

答案 0 :(得分:2)

您必须对类绑定使用Vue的v-bind指令,并将任何变量用法都放入该标记中。看看文档here

最终,您的代码可能看起来像这样。

<i class="play-hand far" :class="icon"></i>

请记住在使用objectsarrays时使用正确的类绑定语法。