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

推薦する

Flutterを使用して移動可能なスタックウィジェット機能を作成する

この投稿では、キャンバスとドラッグ可能なノード インターフェースを使用するデスクトップおよび Web...

CSS を使用して 3 つのステップでショッピング モールのカード クーポンを作成する

今日は618日、主要なショッピングモールはすべてプロモーション活動を行っています。今日は、次のように...

CSSスクロールバースタイル設定の実装

Webkit スクロールバー スタイルのリセット1. スクロールバーには、スクロールバー ボタンとト...

MySQL バッチ挿入ループの詳細なサンプルコード

背景数日前、MySql でページングを行っていたときに、ページングに制限 0,10 を使用するとデー...

MySql 5.7.21 無料インストール バージョンの構成方法 (Win10 の場合)

1.インストールしたい場所に解凍し、my.iniファイルを作成します。 my.iniの内容は次のと...

JavaScript の setTimeout と setTimeinterval の使用例の説明

どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...

Linux /etc/network/interfaces 設定インターフェース方法

Linux の /etc/network/interfaces ファイルは、ネットワーク インターフ...

複数のパッケージソースから同時にパッケージをロードするようにnpmを設定する方法

目次1. ローカルストレージを構築する2. npmパッケージを作成し、プライベートリポジトリにアップ...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - GTID ベースのレプリケーション

GTIDベースのレプリケーション導入GTID ベースのレプリケーションは、MySQL 5.6 以降に...

MySQL コード実行構造例の分析 [シーケンス、分岐、ループ構造]

この記事では、例を使用して MySQL コード実行構造について説明します。ご参考までに、詳細は以下の...

CSS の border 属性と display 属性の使い方の簡単な分析

境界プロパティの概要borderプロパティは要素の境界を設定します。境界線の3要素は、太さ、線の種類...

HTML iframe と frameset の違い_PowerNode Java Academy

導入1.<iframe> タグ: iframe は、ページ内に内部フレームを生成するイン...

iframe を使用して Web ページに他の Web ページを埋め込む方法

iframe の使い方:コードをコピーコードは次のとおりです。 <DIV align=cent...

ウェブサイトのフロントエンドをエレガントでユーザーにとって魅力的なものにする方法

ウェブフロントエンドのウェブサイトの気質は感情であり、言葉なしでユーザーを魅了できる感情です。では、...

IDEA が Docker を統合してリモート展開を実現するための手順

1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...