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インストール手順と各種問題解決(ページアクセス初期化パスワード)

推薦する

IE6 の select を div でカバーできないバグの解決方法

div を使用してマスクを作成したり、ポップアップ ウィンドウをシミュレートしたりします。ただし、I...

USE DB 輻輳に対する MySQL ソリューションの詳細な説明

障害に遭遇すると、障害の根本的な原因を考えるのではなく、障害を解決する方法を考えることがよくあります...

Linux の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...

MySQLの日付と時刻関数の使用の概要

この記事はMySQL 8.0に基づいていますこの記事では、日付と時刻の操作のための MySQL 関数...

deepin20 で NVIDIA クローズドソース ドライバーをインストールするための詳細な手順

ステップ1: ディープ「グラフィックドライバー」をインストールするdeepin v20にはデフォルト...

React を使って小さなプログラムを書くための Remax フレームワークのコンパイル プロセス分析 (推奨)

Remax は、実行時に構文制限のないソリューションを採用した React を使用して小規模なプロ...

Linux での MySQL 5.6.24 (バ​​イナリ) 自動インストール スクリプト

この記事では、Linux環境でのmysql5.6.24自動インストールスクリプトコードを参考までに共...

Vue デフォルトスロットの理解とサンプルコード

目次スロットとは何かデフォルトスロットの理解コードスニペット要約するスロットとは何かスロットは、親コ...

Vue 監視属性のグラフィック例の詳細な説明

目次リスナープロパティとは何ですか?リスニングプロパティと計算プロパティの違いは何ですか?監視プロパ...

HTML の表の行と列を結合する問題の解決策の詳細な説明

私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...

CentOS7 デプロイメント Flask (Apache、mod_wsgi、Python36、venv)

1. Apacheをインストールする # yum インストール -y httpd httpd-de...

衝突検出を実装するためのjs

この記事の例では、衝突検出を実装するためのjsの具体的なコードを参考までに共有しています。具体的な内...

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

MacでのMySQL初期化パスワード操作

Macでデータベースを操作する際に個人が遭遇するデータベース起動の問題の簡単な記録1. Apple-...

MySQLイベント計画タスクに関する簡単な説明

1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...