hasyrails / calendar-vue-original

0 stars 0 forks source link

11 icon transition / v-ifでアイコン表示切り替え #25

Closed hasyrails closed 4 years ago

hasyrails commented 4 years ago

まず、基本的なv-ifによるクリックでの表示切り替えを 簡単なもので試す → devidedScheduleの状態に合わせてアイコン切り替えができるようにする

hasyrails commented 4 years ago

bootstrapをインストール

Vue.js + Bootstrap4でポートフォリオサイトの雛形を作ろう!

hasyrails commented 4 years ago

スケジュール表示のスタイリングを変更

レスポンシブスタイル機能が消えたのでのちほど実装要

hasyrails commented 4 years ago

アイコン埋め込み成功

Image from Gyazo

hasyrails commented 4 years ago

v-ifで簡易的に切り替えテストする

hasyrails commented 4 years ago

v-ifによる表示切り替えに関する参考

表示⇄非表示の2状態の切り替えではなく、 3種類の状態を切り替えたい v-if,v-else-if,v-elseを使って条件分岐しよう - Vue.jsで条件分岐する方法

条件にクリック回数で変化するデータ:countを使う

 <div>
      <p v-if="count===1||count===4"><font-awesome-icon icon="coffee"  size="10x" /></p>
      <p v-else-if="count===2||count===5"><font-awesome-icon icon="bath"  size="10x" /></p>
      <p v-else-if="count===3||count===6"><font-awesome-icon icon="birthday-cake" size="10x"/></p>
      <p v-else>Nothing</p>
    </div>

    <div>
      <button v-on:click="count++">You clicked me {{ count }} times.</button>
    </div>

<script>
  data() {
    return {
      count: 0,
    }
</script>

クリック回数による切り替え実装完了

Image from Gyazo

hasyrails commented 4 years ago

切り替えの条件の組み方 → 配列を作成, v-forを使う クリックするたびに配列の要素を移動して選択することができるようにする

hasyrails commented 4 years ago

メソッド定義, while文で実装できた

<div>
      <p v-if="count===1"><font-awesome-icon icon="coffee"  size="10x" /></p>
      <p v-else-if="count===2"><font-awesome-icon icon="bath"  size="10x" /></p>
      <p v-else-if="count===3"><font-awesome-icon icon="birthday-cake" size="10x"/></p>
      <p v-else>Nothing</p>
    </div>

    <div>
      <button v-on:click="countChange">You clicked me {{ count }} times.</button>
    </div>

<script>
methods: {
    countChange(){
      if(this.count < 3){
        this.count ++
      }else{
        this.count = 0
      }
    },
</script>

Image from Gyazo

これをカレンダー内のタスクのアイコンに実装する

hasyrails commented 4 years ago

カレンダーのアイコンに反映完了

Image from Gyazo

タスク別に変更させることができるか?

hasyrails commented 4 years ago

v-forが必要?

hasyrails commented 4 years ago

一回しか変わらない?

Image from Gyazo

ハードコーディングで固定としているせいの可能性

devidedSchedulesの値もちゃんと変わってはいる

なぜv-ifが働かない?? Image from Gyazo

hasyrails commented 4 years ago

iconChange()メソッドを schedules[0]限定で発火するようにしている

methods: {
    iconChange(){
      if(this.schedules[0].icon < 3){
        this.schedules[0].icon ++;
      }else{
        this.schedules[0].icon = 0
      }
    },

クリックしたタスクのみに発火するようにしたい

hasyrails commented 4 years ago

switch分で実装

  methods: {
    iconChange(){
      switch(this.schedules[0].icon){
        case 0:
          this.schedules[0].icon = 1
          this.createDevidedSchedules();
          location.reload();
          this.schedules[0].icon = 1;    // 反映されない
          break;
        case 1:
          this.schedules[0].icon = 2
          this.createDevidedSchedules();
          location.reload();
          this.schedules[0].icon = 2;  // 反映されない
          break;
        case 2:
          this.schedules[0].icon = 3
          this.createDevidedSchedules();
          location.reload();
          this.schedules[0].icon = 3;  // 反映されない
          break;
        case 3:
          this.schedules[0].icon = 0
          this.createDevidedSchedules();
          location.reload();
          this.schedules[0].icon = 0;  // 反映されない
          break;
      }
    },

created()フックの時の リロードで反映されない

Image from Gyazo

hasyrails commented 4 years ago

おそらく

schedules / devidedSchedules の変更が 初期値の固定で動かないことが原因。

いったん保留とする