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

推薦する

VUE を使用して Ali Iconfont ライブラリをオンラインで呼び出す方法

序文何年も前、私はサーバー側の初心者でしたが、業界の競争が激しくなるにつれて、フロントエンドの初心者...

Alibaba Cloud OSS アクセス権設定(RAM 権限制御)実装

シナリオmyBuket の static/material/ ディレクトリなど、Alibaba Cl...

JavaScript Sandboxについての簡単な説明

序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...

略語マークと頭字語マーク

<abbr>タグと<acronym>タグは、Web ページに表示される略語と...

XHTML CSS ページをプリンタ ページに変換する

以前は、Web ページのプリンタ対応バージョンを作成するには、印刷したときに見栄えがよくなるようにレ...

Reactでコンポーネントがどのように通信するかの詳細な説明

1. 何ですかコンポーネント間の通信は、次の 2 つの単語に分けることができます。コンポーネントコ...

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト 1...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

体験をデザインする: ボタンには何があるか

<br />最近、UCDChina は「インターフェース上のテキストに注意を払う」という...

xshellを使用してLinuxサーバーに接続する

xshellを使用してLinuxに接続する利点Windows環境でLinuxを直接操作できるインター...

MySQL シリーズ 14 MySQL 高可用性実装

1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...

VMWARE で Centos8 仮想マシンをコピーすることによって発生する IP 損失の問題の解決策

VMwareでcentos8サービスをインストールしてコピーすると、次の問題が発生します。 コピー前...

ReactのuseEffectクロージャの落とし穴についての簡単な説明

問題コードuseEffectによって発生したクロージャの問題コードを見てみましょう 定数 btn =...

WeChatアプレットがログインインターフェースを実装

WeChatアプレットのログインインターフェースは参考までに実装されています。具体的な内容は次のとお...

DockerはRedisをインストールし、操作用のビジュアルクライアントを導入します

1 はじめにRedis 、 ANSI C言語で開発されたKey-Valueベースの高性能NoSQLデ...