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

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:

主站蜘蛛池模板: 郴州市| 集安市| 江西省| 介休市| 凤山市| 合阳县| 福鼎市| 托克逊县| 绥阳县| 濉溪县| 宁夏| 西华县| 富源县| 盈江县| 汕头市| 额尔古纳市| 时尚| 西安市| 漳浦县| 子长县| 安吉县| 白水县| 门头沟区| 延津县| 贡嘎县| 柳林县| 莱州市| 商南县| 泽库县| 井陉县| 抚松县| 新野县| 永城市| 闽清县| 济源市| 胶南市| 姜堰市| 三门峡市| 长宁区| 冀州市| 观塘区|