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がログファイルを保存する場所の詳細な説明

推薦する

PDO を使用して SQL インジェクションを防ぐ原理の分析

序文この記事では、SQL インジェクションを回避するために pdo の前処理メソッドを使用します。詳...

vue フロントエンド HbuliderEslint リアルタイム検証 自動修復設定

目次HBuilderX での ESLint プラグインのインストールカスタム eslint-js ル...

vsCodeはワンクリックでvueテンプレートを生成します

1. ショートカットCtrl + Shift + Pを使用してコンソールを呼び出します 2、「スニペ...

Linux でネットワーク パケット損失と遅延をシミュレートする方法

netem と tc: netem は、Linux カーネル バージョン 2.6 以降で提供されるネ...

InnoDB エンジンのパフォーマンスを最適化するための my.cnf パラメータ構成

私はインターネット上で数え切れないほどの my.cnf 構成を読みましたが、言及されている構成のほと...

MySQL 構成マスタースレーブサーバー (マスター 1 台とスレーブ複数台)

目次アイデアホスト構成confを変更する再起動テストスレーブ 1 の構成スレーブ2の構成マスターとス...

初心者のための入門チュートリアル⑤:ウェブサイト登録はとても簡単、簡単な登録のヒント

スペースを購入してウェブサイトを構築したことがある友人なら、ウェブサイトは正式に開設する前に登録する...

初心者向け入門講座⑧:記事サイトを簡単に作る

前回の投稿では、Web ページの作成方法について説明しました。Web サイトは多くの Web ページ...

mysql 8.0.18.zip のインストールと構成方法のグラフィック チュートリアル (Windows 64 ビット)

以前にインストールされたバージョンのデータベースをアンインストールする方法については、この記事を参照...

Centos 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar の簡単な分析

Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...

WeChatアプレットは記録機能を実装します

この記事では、WeChatアプレットのレコード機能を実装するための具体的なコードを参考までに紹介しま...

CSS を使用して HTML フォーム コントロールを美しくする詳細な例 (フォームの美化)

1. HTML送信ボタンと下部ボタンの基本構文構造1. HTML送信ボタン入力タグで type=&...

Linux で MySQL スケジュールタスクを実装する方法

前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます...

dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明

問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...

Dockerの急速な拡張の高度な方法

1. コマンド方式作成された Swarm クラスターで nginx サービスを実行し、--repli...