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

推薦する

XAML でボタンを円として再描画する方法

XAML レイアウトを使用する場合、インターフェイスを Metro 風にするために、一部のボタンでは...

JavaScriptのポイントごとのシリーズでこれは何ですか

これを理解するおそらく、他のオブジェクト指向プログラミング言語でもthis見たことがあり、これがコン...

HTML 要素の高さ、offsetHeight、clientHeight、scrollTop などの詳細な説明。

要素に関するいくつかの属性フロントエンドの日常的な開発では、一部のページのプロパティを取得または監視...

MySQL SQL ステートメントのパフォーマンス チューニングの簡単な例

MySQL SQL ステートメントのパフォーマンス チューニングの簡単な例サーバー開発を行う際には、...

コーディングスキルを向上させるためのJavaScriptのヒント

目次1. 一意の値をフィルタリングする2. 短絡評価2.1 シナリオ例3. ブール変換4. 文字列を...

CSSスプライトの応用の詳細な説明

CSS Sprite は、CSS スプライトとも呼ばれ、画像結合技術です。この方法は、複数の小さなア...

MySQL 結合クエリ構文と例

接続クエリ:これは、2 つのクエリ (またはテーブル) の各行をペアで接続した結果です。つまり、1 ...

JavaScript初心者がよく犯す間違い

目次序文undefined と null の混同紛らわしい数値の加算と文字列の連結戻り文の改行の問題...

Vueのフロントエンドシステムとフロントエンドとバックエンドの分離の詳細な説明

目次概要フロントエンド知識システムフロントエンドの3つの要素プレゼンテーション層 (CSS)動作レイ...

プロジェクトにおけるVue3のロジック抽出とフィールド表示についての簡単な説明

目次論理階層化異なる地域から事業を分離するこれを実行する利点このようなシナリオにどう対処するか最適化...

Vueは時間カウントダウン機能を実装する

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。必要:...

MySQLを監視するためのbinlogログ解析ツールの詳しい説明:Canal

Canal は、Java を使用して開発された Alibaba のオープンソース プロジェクトです...

ジョセフリング問題を解決する 3 つの JavaScript メソッド

目次概要問題の説明循環リンクリスト順序付き配列数学的再帰要約する概要ジョセフ・リング問題は、ジョセフ...