WeChat アプレット ピッカー マルチ列セレクター (モード = multiSelector)

WeChat アプレット ピッカー マルチ列セレクター (モード = multiSelector)

vue-next-admin は、vue3.x + CompositionAPI + typescript + vite + element plus + vue-router-next + next.vuex をベースにした、携帯電話、タブレット、PC 向けのオープンソースの無料テンプレート ライブラリです。

1. 効果図(複数列)

ここに画像の説明を挿入

2. 通常セレクター: mode = selector、複数列セレクター: mode = multiSelector

ドキュメントアドレス: WeChat開発ドキュメントpicker選擇器

  • 通常セレクター: mode = セレクター、一維數組:array: ['美國', '中國', '巴西', '日本']
  • 複数列セレクター: mode = multiSelector、二維數組:multiArray: [['無脊柱動物', '脊柱動物'], ['扁性動物', '線形動物', '環節動物', '軟體動物', '節肢動物'], ['豬肉絳蟲', '吸血蟲']]

形式が正しくないため、対応する配列形式に処理する必要があります。以下はピット図です。

ここに画像の説明を挿入

3. アプリ

{
  「ページ」: [
    「ページ/インデックス/インデックス」、
    「ページ/ログ/ログ」、
    「ページ/ピッカー/ピッカー」
  ]、
  "entryPagePath": "ページ/ピッカー/ピッカー",
  「ウィンドウ」: {
    "backgroundTextStyle": "light",
    "ナビゲーションバーの背景色": "#fff",
    "navigationBarTitleText": "Weixin",
    "ナビゲーションバーのテキストスタイル": "黒"
  },
  "サイトマップの場所": "サイトマップ.json",
  "コンポーネントの使用": {
    "van-button": "@vant/weapp/button/index",
    "van-area": "@vant/weapp/area/index"
  }
}

4. ピッカー.wxml

<!--pages/picker/picker.wxml-->
<表示>
  <view class="section__title">複数列セレクター</view>
  <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange"
    値="{{multiIndex}}" 範囲="{{newArr}}">
    <view class="picker">
      現在の選択: <van-button type="primary">
        {{newArr[0][multiIndex[0]]}}, {{newArr[1][multiIndex[1]]}}, {{newArr[2][multiIndex[2]]}}</van-button>
    </ビュー>
  </ピッカー>
</ビュー>

5. ピッカー

多列選擇器:mode = multiSelector

配列の形式に注意してください: multiArray數組にはchildrenがあり、2 次元配列を処理します:

// ページ/ピッカー/ピッカー.js
ページ({
  /**
   * ページの初期データ */
  データ: {
    マルチ配列: [{
        id: 1,
        ラベル:「南東」、
        子供たち: [{
            id: 2,
            ラベル:「上海」、
            子供たち: [{
                id: 3,
                ラベル: 「普陀」、
              },
              {
                id: 4,
                ラベル:「黄埔」、
              },
              {
                id: 5,
                ラベル: "徐匯",
              },
            ]、
          },
          {
            id: 7,
            ラベル:「江蘇省」、
            子供たち: [{
                id: 8,
                ラベル:「南京」、
              },
              {
                id: 9,
                ラベル:「蘇州」、
              },
              {
                id: 10,
                ラベル:「無錫」、
              },
            ]、
          },
          {
            id: 12,
            ラベル:「浙江省」、
            子供たち: [{
                id: 13,
                ラベル:「杭州」、
              },
              {
                id: 14,
                ラベル:「寧波」、
              },
              {
                id: 15,
                ラベル: 「嘉興」、
              },
            ]、
          },
        ]、
      },
      {
        id: 17,
        ラベル:「北西」、
        子供たち: [{
            id: 18,
            ラベル: 「陝西省」、
            子供たち: [{
                id: 19,
                ラベル:「西安」、
              },
              {
                id: 20,
                ラベル:「延安」、
              },
            ]、
          },
          {
            id: 21,
            ラベル:「新疆ウイグル自治区」、
            子供たち: [{
                id: 22,
                ラベル: 「ウルムチ」、
              },
              {
                id: 23,
                ラベル:「カラマイ」、
              },
            ]、
          },
        ]、
      },
    ]、
    マルチインデックス: [0, 0, 0],
    マルチID: [],
    新しい引数: [],
  },

  バインドマルチピッカーチェンジ(e) {
    コンソールにログ出力します。
  },
  バインドマルチピッカー列変更(e) {
    データ = {
      newArr: this.data.newArr、
      マルチインデックス: this.data.multiIndex、
      マルチIds: this.data.multiIds、
    };
    data.multiIndex[e.detail.column] = e.detail.value;

    検索列 = () => {
      arr1 = [] とします。
      arr2 = [] とします。
      this.data.multiArray.map((v, vk) => {
        if (data.multiIndex[0] === vk) {
          データ.multiIds[0] = {
            ...、
          };
          v.children.map((c, ck) => {
            arr1.push(c.label);
            if (data.multiIndex[1] === ck) {
              データ.multiIds[1] = {
                ...c、
              };
              c.children.map((t, vt) => {
                arr2.push(t.label);
                if (data.multiIndex[2] === vt) {
                  データ.マルチIds[2] = {
                    ...、
                  };
                }
              });
            }
          });
        }
      });
      データ.newArr[1] = arr1;
      データ.newArr[2] = arr2;
    };
    スイッチ (e.detail.column) {
      ケース0:
        // 切り替えるたびに初期値を復元します。data.multiIndex[1] = 0;
        データ.マルチインデックス[2] = 0;
        //関数処理を実行します searchColumn();
        壊す;
      ケース1:
        データ.マルチインデックス[2] = 0;
        検索列();
        壊す;
    }
    this.setData(データ);
  },

  /**
   * ライフサイクル機能 - ページの読み込みをリッスンする*/
  onLoad: 関数 (オプション) {
    状態 = {
      編曲: [],
      ar1: [],
      ar2: [],
      ar3: [],
      マルチID: []
    }
    this.data.multiArray.map((v, vk) => {
      state.arr1.push(v.label);
      if (this.data.multiIndex[0] === vk) {
        状態.multiIds[0] = v;
      }
      (state.arr2.length <= 0) の場合 {
        v.children.map((c, ck) => {
          state.arr2.push(c.label);
          if (this.data.multiIndex[1] === ck) {
            状態.multiIds[1] = c;
          }
          (state.arr3.length <= 0) の場合 {
            c.children.map((t, tk) => {
              state.arr3.push(t.label);
              if (this.data.multiIndex[2] === tk) {
                状態.multiIds[2] = t;
              }
            });
          }
        });
      }
    });
    状態.arr[0] = 状態.arr1;
    状態1と状態2
    状態.arr[2] = 状態.arr3;
    this.setData({
      newArr: 状態.arr、
      マルチIds: state.multiIds、
    });
  },

  /**
   * ライフサイクル関数 - ページの初期レンダリングの完了を待機します*/
  onReady: 関数 () {},

  /**
   * ライフサイクル機能 - モニターページ表示 */
  onShow: 関数 () {},

  /**
   * ライフサイクル機能 - ページの非表示を監視する*/
  onHide: 関数 () {},

  /**
   * ライフサイクル機能 - ページのアンインストールを監視する*/
  onUnload: 関数 () {},

  /**
   * ページ関連のイベント処理関数 - ユーザーのプルダウンアクションをリッスンする */
  onPullDownRefresh: 関数 () {},

  /**
   * ページ上のボトムイベントを処理する関数*/
  onReachBottom: 関数 () {},

  /**
   * ユーザーは右上隅をクリックして共有します*/
  onShareAppMessage: 関数 () {},
});

WeChatミニプログラムピッカーマルチカラムセレクター(モード=マルチセレクター)に関するこの記事はこれで終わりです。より関連性の高いミニプログラムピッカーマルチカラムセレクターコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後も123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatアプレットはカスタムピッカーセレクターポップアップコンテンツを実装します
  • WeChat アプレット ピッカーの日付と時刻の選択

<<:  MySQL で UTF-8 エンコーディングを使用しないのはなぜですか?

>>:  JenkinsのLinuxインストール手順と各種問題解決(ページアクセス初期化パスワード)

推薦する

JavaScript の parseInt() の魔法についての簡単な説明

原因このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(at...

CocosCreator でレイヤー管理に常駐ノードを使用する方法

CocosCreator バージョン: 2.3.4ほとんどのゲームにはレイヤー管理機能があり、例えば...

MySQL MyISAM デフォルト ストレージ エンジンの実装原則

デフォルトでは、MyISAM テーブルはディスク上に .frm (テーブル構造ファイル)、.MYD ...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

MySQL 8.0 でのチェック制約の実装

みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。今回はMySQL 8.0で追...

独自のネイティブ JavaScript ルーターを作成する方法

目次序文導入JavaScript 履歴 API独自のネイティブJSルーティングを実装するHistor...

Linux カーネル デバイス ドライバー proc ファイル システム ノート

/***************** * proc ファイルシステム***************...

JavaScript を使用した数独の完全な実装プロセス

目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...

クラウドネイティブテクノロジー Kubernetes (K8S) の紹介

目次01 Kubernetes とは何ですか? 02 KubernetesとCompost+Swar...

JavaScriptプロトタイプチェーン図のまとめと実践

目次プロトタイプチェーンプロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装すること...

ローカル画像サーバーのNginx構成の実装

目次1. Nginx の紹介2. 画像サーバーの構築1. Nginx の紹介Nginx はリバース ...

Vueは質問応答機能を実装する

1. リクエスト回答インターフェース2. ユーザーの回答が正しいかどうかを判断します。回答が正しい場...

ページスピードの最適化の概要

インターネットは人々の生活にますます欠かせないものになってきていると思います。 Ajax や fle...

JavaScript プロトタイプのデータ共有とメソッド共有の実装を調べる

データ共有プロトタイプにはどのようなデータを書き込む必要がありますか?共有する必要があるデータはプロ...