官术网_书友最值得收藏!

Playing a card

Now, we need to handle the 'play' event in the hand component we emit in the cards when the user clicks on them, and emit a new 'card-play' event to the main component with an additional argument--the played card in question.

  1. First, create a new method called handlePlay. It takes a card argument and emits the new event to the parent component:
      methods: {
handlePlay (card) {
this.$emit('card-play', card)
},
},
  1. Then, add a listener to our cards for the 'play' event:
      <card v-for="card of cards" :def="card.def" 
@play="handlePlay(card) />

As you can see here, we directly use the iterator variable card of the v-for loop. That way, we don't need the card component to emit its card item since we already know what it is.

To test the card play, we will only remove it from the hand for now.

  1. Create a new temporary method called testPlayCard in the main component in the main.js file:
      methods: {
// ...
testPlayCard (card) {
// Remove the card from player hand
const index = this.testHand.indexOf(card)
this.testHand.splice(index, 1)
}
},
  1. Add the event listener for the 'card-play' event on the hand component in the main template:
      <hand v-if="!activeOverlay" :cards="testHand" @card-play="testPlayCard" />

If you click on a card, it should now emit a 'play' event to the hand component, which will then emit a 'card-play' event to the main component. It will, in turn, remove the card from the hand, making it disappear. To help you debug this sort of use case, the devtools have an Events tab:

主站蜘蛛池模板: 曲松县| 广丰县| 新河县| 叙永县| 蓬莱市| 富锦市| 聊城市| 油尖旺区| 苍溪县| 宁德市| 丽江市| 修水县| 穆棱市| 南部县| 四子王旗| 双牌县| 新宾| 福泉市| 湖南省| 蓝山县| 大姚县| 乌审旗| 扎兰屯市| 法库县| 多伦县| 盐边县| 开平市| 兴文县| 门源| 安吉县| 旺苍县| 衢州市| 黔西| 河北省| 海兴县| 江川县| 江都市| 涟水县| 辽宁省| 楚雄市| 江油市|