Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

下図のように、 selectポップアップレイヤーの下部に操作ボタンを配置するのが一般的な設計方法です。

しかし残念ながら、 element-uiこのスロットを提供していません。この機能を実装したい場合、コンポーネントを書き換えるか、公式アップデートを待つしかありませんか? 答えはもちろんノーです!

この機能を関数を通じて実装するのには時間がかかりました。el el-selectel-cascaderをサポートし、クリックして効果をプレビューします。

実は、ロジックは非常に単純です。指定された位置に次のhtmlを挿入するだけです。

<ul class="el-cascader-menu__list" style="border-top: solid 1px #E4E7ED;padding:0">
  <li class="el-cascader-node" style="height:38px;line-height: 38px">
    <i class="el-icon-plus"></i>
    <span class="el-cascader-node__label">新しい製品カテゴリを追加する</span>
    <i class="el-icon-arrow-right el-cascader-node__postfix"/>
  </li>
</ul>

ここではel-cascaderスタイルを直接使用します。実際の使用では、このhtml必要に応じて変更できます。

上記はコードです。この関数をmethodsに記述します

/**
 * element-ui の Select と Cascader のポップアップ下部操作ボタンを追加します * @param visible
 * @param refName 参照名を設定 * @param onClick 下部操作ボタンクリックリスナー */
可視変更(可視、refName、クリック時) {
  (可視)の場合{
    const ref = this.$refs[refName];
    ポッパー = ref.$refs.popper; とします。
    もし (popper.$el) ポッパー = ポッパー.$el;
    if (!Array.from(popper.children).some(v => v.className === 'el-cascader-menu__list')) {
      ドキュメントの要素を作成します。
      el.className = 'el-cascader-menu__list';
      el.style = 'border-top: solid 1px #E4E7ED; padding:0; color: #606266;';
      el.innerHTML = `<li class="el-cascader-node" style="height:38px;line-height: 38px">
<i class="el-icon-menu"></i>
<span class="el-cascader-node__label">製品分類管理</span>
<i class="el-icon-arrow-right el-cascader-node__postfix"/>
</li>`;
      popper.appendChild(el);
      el.onclick = () => {
        // 下のボタンをクリックした後にトリガーするロジックもここに直接記述できます onClick && onClick();

        // 次のコードは、クリック後にポップアップ レイヤーを非表示にする機能を実装します。これは必要ないので削除できます。if (ref.toggleDropDownVisible) {
          ref.toggleDropDownVisible(false);
        } それ以外 {
          ref.visible = false;
        }
      };
    }
  }
},

el-selectの呼び出し方法はel-cascaderと同じです。ここではel-cascader例に挙げます。

<エルカスケーダー
    :options="カスケーダーオプション"
    v-model="カスケーダー値"
    @visible-change="v => visibleChange(v, 'cascader', cascaderClick)"
    ref="カスケーダー"
/>

ヒント: 後日正式版にアップグレードすると無効になる可能性があるので注意して使用してください

要約する

以上、element-uiのSelectとCascaderにポップアップ下部操作ボタンを追加する方法についてご紹介しました。参考になれば幸いです。

<<:  Vue での bimface の使用に関する詳細

>>:  Dockerがログファイルを保存する場所の詳細な説明

推薦する

データベース管理に役立つ 5 つの MySQL GUI ツール

MySQL には多くのデータベース管理ツールがあります。作業効率の向上に役立つ優れた GUI ツール...

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

Dockerデータのバックアップとリカバリプロセスの詳細な説明

データのバックアップ操作は非常に簡単です。次のコマンドを実行します。 docker run --vo...

浮遊要素によって引き起こされる問題と解決策の詳細な説明

1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...

純粋な CSS で実装された大きなドロップダウン メニューのサンプル コード

これは純粋に CSS で実装された大きなドロップダウン メニューです。この大きなメニューは、js コ...

MySQL 8.0の落とし穴の詳細な説明

本日、MySQL 8.0 をアップデートしました。最初の問題: Navicatがデータベースに接続で...

Linux スケジュールタスクの関連操作の概要

皆様の参考と操作を容易にするために、様々な主要ウェブサイトを検索し、関連するスケジュールされたタスク...

私の CSS フレームワーク - base.css (ブラウザのデフォルト スタイルをリセット)

コードをコピーコードは次のとおりです。 @文字セット "utf-8"; /* @...

nginx 用の zabbix 5.0 をインストールして展開する方法

目次実験環境インストールと展開データベースをインストールして設定します (ここでは mariadb ...

テキストエリアの使用に関する注意事項

なぜテキストエリアについて具体的に言及するのでしょうか?なぜなら、textarea ノードは実際には...

1 つの記事で Vuex を理解する

目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...

Linux入力サブシステムフレームワーク原理の分析

入力サブシステムフレームワークLinux 入力サブシステムは、上から下に向かって、入力サブシステム ...

JavaScript JSON.stringify() の使用法の概要

目次1. 使用方法1. 基本的な使い方2. 2番目のパラメータ - フィルター3. 3番目のパラメー...

Ubuntuはカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

目次1.Linuxログインインターフェース2. コードを書く3. Makefileを書く4. コンパ...

よく使用される入力テキストボックスの内容は自動的に垂直方向に中央揃えされ、クリックするとデフォルトのプロンプトテキストは空になります。

3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...