Vue カスタム オプション時間カレンダー コンポーネント

Vue カスタム オプション時間カレンダー コンポーネント

この記事の例では、参考のためにvueカスタムオプションタイムカレンダーコンポーネントの具体的なコードを共有しています。具体的な内容は次のとおりです。

カレンダーの機能:

1. 過去の時間は選択できません
2. 選択できない時間をカスタマイズ可能
3. 当月のデフォルトの表示日は1日、他月の1日は1日となります。時間が選択できない場合は翌日に延期されます。

効果画像:

-------ショーを始めましょう-----------

**まず、カレンダーページのレイアウトを描きます。win10システムのカレンダーレイアウトを参照してください* 6行7列、なぜそうなるのか、自分で理解してください...*私も「覗いてみた」

beginDay は現在の月の最初の日の曜日、prevMdays は前月の合計日数、nowMdays は現在の月の合計日数です。これにより、カレンダー表示効果が実現され、データ日付などの使用される可能性のある一部のデータがタグにバインドされます。

<div class="dateContent-body-day" v-for="item in 42" :key="item">
            <div
              v-if="item - beginDay > 0 && item - beginDay <= nowMdays"
              :class="{
                'active-day': `${year}/${month}/${item - beginDay}` == curDate
              }"
              @click="dayHandler"
              :data-year="年"
              :data-month="月"
              :data-day="アイテム開始日"
              :data-dates="年 + '/' + 月 + '/' + (項目 - 開始日)"
            >
              {{ アイテム開始日 }}
            </div>
            <div class="other-day" v-else-if="item - beginDay <= 0">
              {{ item - beginDay + prevMdays }}
    </div>
  <div class="other-day" v-else>{{ item - beginDay - nowMdays }}</div>
</div>

- 次…

使用されたデータ:

*active-day はハイライト表示された日、つまり選択された日付です。curDate はどの日を選択するかを制御します。ここではデフォルトは今日です。props データ timeArry が開かれ、一部のカスタム日付を選択不可として渡すことができます。クリックされた日付にバインドされた日付が配列内に存在する場合、その日付が返されます。選択可能な場合、選択された結果は $emit を介して chooseDate イベントで公開されます。

//クリックして日を切り替える dayHandler(e) {
      コンソールログ(e);
      var daNum = e.target.dataset;
      (this.cantTime.indexOf(daNum.dates) > -1) の場合 {
        this.$toast("オープン日ではないため、選択できません");
        戻る;
      }
      もし (
        `${daNum.年}/${daNum.月}/${daNum.日}` >=
        `${新しい日付().getFullYear()}/${新しい日付().getMonth() +
          1}/${新しい日付().getDate()}`
      ){
        ターゲットデータセットの日付。
        これを$emit(
          「日付を選択」、
          this.year + "/" + this.month + "/" + this.date
        );
      } それ以外 {
        this.$toast("過去の時間は選択できません");
      }
    },
    //次の月に切り替える``nextMonth() {
      (今月 == 12) の場合 {
        this.month = 1;
        this.year++;
      } それ以外 {
        this.month++;
      }
},

月と日の切り替えを観察する必要があります。月の変化を観察することに重点を置いています。時計が乱用されたかどうかはわかりません。

```javascript
時計:
    日付(val, oldval) {
      if (値) {
        this.curDate = `${this.year}/${this.month}/${this.date}`;
      }
    },
    月(val, oldval) {
      if (値) {
        var 日付;
        (var i = 1; i <= 31; i++) の場合 {
          console.log(`${this.year}/${this.month}/${i}`);
          (this.cantTime.indexOf(`${this.year}/${this.month}/${i}`) < 0) の場合 {
            console.log("値が存在しません。停止してください。日付は " + i のままです);
            日付 = i;
            壊す;
          }
        }
        console.log(ndate, `${this.year}/${this.month}/${ndate}`);
        //現在の月と現在の日を比較します。将来の月のデフォルトは1で、現在の月のデフォルトは今日です(
          `${this.year}/${this.month}/1` >
          `${新しい日付().getFullYear()}/${新しい日付().getMonth() +
            1}/${新しい日付().getDate()}`
        ){
          this.curDate = `${this.year}/${this.month}/${ndate}`;
          this.date = ndate;
        } それ以外 {
          (var i = new Date().getDate(); i <= 31; i++) {
            console.log(2`${this.year}/${this.month}/${i}`);
            (this.cantTime.indexOf(`${this.year}/${this.month}/${i}`) < 0) の場合 {
              this.curDate = `${新しい日付().getFullYear()}/${新しい日付().getMonth() +
            1}/${i}`;
          this.date = i;
              壊す;
            }
          }
        }
        これを$emit(
          「日付を選択」、
          this.year + "/" + this.month + "/" + this.date
        );
      }
    }
  },

親コンポーネントで呼び出される

<calendar :timeArray="timeArray" @chooseDate="chooseHandler"></calendar>
'@/components/index.js' から {calendar,alertBox} をインポートします。
エクスポートデフォルト{
    コンポーネント:{カレンダー、アラートボックス
    },

これでカレンダーは完成です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueはカレンダーコンポーネントを実装します
  • Vue は垂直方向の無限スライドカレンダーコンポーネントを実装します
  • Vueカレンダーコンポーネントのカプセル化方法
  • Vueカレンダーコンポーネントをゼロから作成する
  • Vue の要素カレンダー コンポーネントを使用したサンプル コード
  • Vue2-Calendar をベースにしたカレンダー コンポーネントの改善 (中国語の説明を含む)
  • Vueはクールなカレンダーコンポーネントを実装します
  • VUEはカレンダーコンポーネント機能を実装します
  • 手書きカレンダーコンポーネントのVueバージョン

<<:  MySQL の時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

>>:  MySQL データベースの 1045 エラーの解決方法

推薦する

HttpsページでBaiduシェアを使用するためのソリューション

サイト全体で https アクセスを有効にしてから、共有コードが利用できなくなり、有効になっていた小...

GobangゲームのWebバージョンを実装するためのJavaScript

この記事では、GobangゲームのWebバージョンを実装するためのJavaScriptの具体的なコー...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

HTMLは実際にはいくつかの重要なタグを学ぶアプリケーションです

「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...

MySQL 学習ノート: データ エンジン

現在のデータベースでサポートされているエンジンを表示します エンジンを表示 +-----------...

Dockerはローカルイメージとコンテナの保存場所を設定します

指定したサイズより大きいファイルを検索するには、find コマンドを使用します。 検索 / -typ...

mysql8.0.21 のダウンロードとインストールに関する詳細なチュートリアル

公式ウェブサイトアドレス: https://www.mysql.com/インストールの提案: インス...

...

Linux パーティションまたは論理ボリュームにファイルシステムを作成する方法

序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...

MySQLの文字タイプは大文字と小文字を区別します

デフォルトでは、MySQLの文字タイプは大文字と小文字を区別しません。つまり、name='A...

Tomcat のプレースホルダーによるポート設定方法 (パラメータ指定方式)

仕事で必要になったため、インターネットで多くの情報を見つけましたが、それらはすべてコピーアンドペース...

JS の toFixed() メソッドの丸め精度の問題の詳細な説明

目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...

Linux manコマンドの具体的な使い方

01. コマンドの概要Linux には充実したヘルプ マニュアルが用意されています。コマンドのパラメ...

スライド効果を実現するためのネイティブJavaScript

ページ、特にホームページを作成するときは、通常、Web サイト全体の他のメイン ページにリンクできる...