やりたいこと
現在配列の回転を実装したいと思っています。
そこで以下のコードを書いたのですが、1回転はするが、1度回転するとそれ以降はボタンを押しても回らずにずっと1回転した配列の状態になってしまっています。
なので、どうにか押すたびに回転させることはできないかヒントのみでも助かりますのでご教授お願いしたいです。
現在のコード
html
1<template> 2 <div id="app"> 3 <table> 4 <tr 5 v-for="(chooseBlockRow, vi) in chooseBlock" 6 :key="vi"> 7 <td 8 class="blockCell2" 9 v-for="(chooseBlockCell, mi) in chooseBlockRow" 10 :key="mi" 11 :class="`is-${chooseBlockCell.code}`"> 12 </td> 13 </tr> 14 </table> 15 <div> 16 <button @click.prevent @click="turnLeft()">左に1回転</button> 17 </div> 18 </div> 19</template>
vue
1export default { 2 name: 'App', 3 data (){ 4 const blocks = [ 5 { name:0, 6 data:[ 7 [{code:1}, {code:0}, {code:0}, {code:0}, {code:0}], 8 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 9 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 10 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 11 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 12 ]}, 13 { name:1, 14 data:[ 15 [{code:1}, {code:0}, {code:0}, {code:0}, {code:0}], 16 [{code:1}, {code:0}, {code:0}, {code:0}, {code:0}], 17 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 18 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 19 [{code:0}, {code:0}, {code:0}, {code:0}, {code:0}], 20 ]}, 21 ]; 22 const chooseBlock = []; 23 for (let y = 0; y < 5; y++ ) { 24 const chooseBlockRow = [] 25 for (let x = 0; x < 5; x++){ 26 const chooseBlockCell = { 27 y: y, 28 x: x, 29 code: 0, 30 }; 31 chooseBlockRow.push(chooseBlockCell) 32 } 33 chooseBlock.push(chooseBlockRow) 34 } 35 36 return{ 37 blocks:blocks, 38 haveItem: [], 39 chooseBlock: chooseBlock, 40 }; 41 }, 42 methods:{ 43 turnLeft(){ 44 this.haveItem = this.blocks[0].data 45 for (let i = 0; i < 5; i++) { 46 for (let j = 0; j < 5; j++) { 47 this.chooseBlock[4 - i][j].code = this.haveItem[j][i].code 48 } 49 } 50 }, 51 }
試したこと
returnにもう一つデータの保存用に空のデータを作り、そこに完成したデータを入れるようにしてみましたが、クリックイベントが発動したタイミングで読み込むデータを変えれずに同じ形にしか成りませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/18 06:30