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

推薦する

DockerでVueプロジェクトをデプロイする方法を教えます

1.前面に書きます:軽量仮想化テクノロジーとして、Docker には継続的インテグレーション、バージ...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

docker のインストールが完了し、bridge-nf-call-iptables が無効であると報告される問題を解決します

Centos マシンで docker のインストールが完了したら、docker info コマンドを...

CSSは左固定と右適応のレイアウト方法を実現します

1. フローティングレイアウト1. 最初に固定幅の div をフロートさせます。ドキュメントフローか...

Dockerは異常なコンテナ操作を排除する

この初心者は、Docker を学び始めたばかりの頃にこのような問題に遭遇しました。記録しておきます。...

MySQL での挿入効率のいくつかの例の比較

序文最近、仕事の都合で、約 1000w の大量のデータを MySQL に挿入する必要があり、時間がか...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...

vue-tableは追加と削除を実装します

この記事では、vue-table の追加と削除の具体的なコードを参考までに紹介します。具体的な内容は...

JSはオンラインでのアナウンスのスクロール効果を実現します

この記事では、オンラインアナウンスのスクロール効果を実現するためのJSの具体的なコードを参考までに共...

Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由

目次MVCとMVVMの違い前述のMVCC の概要長所と短所MVVM概要MVVM 実装者 — Vue ...

MySQL実行計画を学ぶ

目次1. 実施計画の概要2. 実行計画の実践id:選択タイプ:テーブル:タイプ:可能なキー:鍵:キー...

JS の querySelector メソッドと getElementById メソッドの違い

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

Vue Element フロントエンドアプリケーション開発 テーブルリスト表示

1. リストクエリインターフェースの効果コード処理ロジックを紹介する前に、まずは感覚的に理解し、レン...

トップに戻るボタンを実装するJavaScript

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...