ElementUI の this.$notify.close() 呼び出しが機能しない問題の解決方法

ElementUI の this.$notify.close() 呼び出しが機能しない問題の解決方法

要件の説明

このプロジェクトでは、まずユーザーが質問を選択する必要があります。選択後、ElementUI の Notification コンポーネントを使用して、ファイル形式がチェック中であることをユーザーに通知します (最初にバックエンドに送信し、バックエンドでチェックしてから、結果をフロントエンドに返す必要があります)。フォーマット チェックが正しければ、通知が閉じられ、アップロードされたファイルは元に戻せないことをユーザーに通知するメッセージ ボックス (ElementUI のコンポーネント) がポップアップ表示されます。

問題の説明

ファイル形式が正しいかどうかを確認した後、通知を削除するには関連する関数を手動で呼び出す必要があります。公式ドキュメントによると、 this.$notify.close()を使用しても機能せず、コンソールにエラーは報告されませんでした。

問題分析

コンソールにthis.$notifyを出力した後、以下に示すように通知関連の関数を入力できます。

コンソールのソースパネルの下のコード

コードでは、id と userOnClose という 2 つのパラメータを必要とするclose()関数など、Notification 内にカプセル化されている関数を確認できます。コードから、id が Notification の ID であることがわかるのは難しくありません。たとえば、Notification が複数ある場合、それらを選択的に閉じることができます。userOnClose は、コールバック関数に少し似た関数を渡すことができます。したがって、 close()関数を使用する場合は、閉じる通知の ID を知っている必要があります。これについては、この記事の最後で簡単に説明します。
コードを見てみると、パラメータを必要とせず、トラバースによってすべての Notification を閉じるcloseAll()関数があることがわかります。これは、このプロジェクトのシナリオに適しています (閉じる必要がある Notification は 1 つだけです)。

問題解決

このプロジェクトでは、 this.$notify.closeAll()を呼び出すだけです。

質問の拡張

重要なのは、通知が複数ある場合、そのうちの 1 つを閉じたい場合はどうすればいいかということです。私はnotify.jsを理解しようとしましたが、idは基本的にnotification_seedのようなパターンであり、これはnotification_文字列と数字で構成される文字列であることがわかりました。ソース コードを見ると、初期seedは 1 であることがわかります。つまり、最初にインスタンス化された Notification の ID はnotification_1になります。図に示すように:

ここに画像の説明を挿入

ここで問題が発生します。close() 関数を呼び出して、正しいと思われる 2 つのパラメータを渡しましたが、機能しません。

ここに画像の説明を挿入

ID の誤解を防ぐために、ブラウザでデバッグしたところ、インスタンス (Notification のインスタンス) の ID が実際に分析した ID であることがわかりました。

ここに画像の説明を挿入

そこで、開発者ツールのデバッグ ツールを使用して、notify.js のclose()関数の実行手順を段階的に確認しました。コードやロジックに問題はないことがわかりました。最後に、インスタンスは splice 関数を通じて対応する ID を持つ Notification も削除しましたが、ページ上の Notification はそのまま残り、消えませんでした (メイン関数は長方形のボックス内にあります)。

ここに画像の説明を挿入

上記は、私が個人的に分析を試みた結果の一部です。もちろん、私の能力が限られているため、結局は問題を解決できませんでした。興味のある人は勉強してみてください。

ElementUI の this.$notify.close() 呼び出しが機能しない問題を解決する方法についての記事はこれで終わりです。Element this.$notify.close() 呼び出しに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueは要素内の$notifyを使用してプロンプト情報の改行の問題を解決します

<<:  MySQL 8.0.18 ハッシュ結合は左/右結合をサポートしていません 左と右の結合の問題

>>:  Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

推薦する

MySQLクエリの基本的なクエリ操作の学習

序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...

ウェブデザイン実践者必読のキャリアプラン

原文記事、転載の際は著者と出典を明記してください! Web デザインは間違いなくテクノロジーであり、...

初心者向けウェブサイト構築ガイド⑦:美しいウェブサイトを作るのはとっても簡単

私はかつて、ウェブサイトを一度も構築したことのない人々が、初心者向けのウェブサイト構築方法に関する私...

ウェブ クラスターの Docker Stack 展開方法の手順

Docker はますます成熟し、その機能もますます強力になっています。 Docker Stack を...

JavaScript の数値および数学オブジェクトの概要

目次1. JavaScript における数値2. Javascript の Math オブジェクト1...

Vue3におけるキーの役割と動作原理についての簡単な説明

このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...

Vue3 トランジションアニメーションの落とし穴記録について

目次背景問題の場所さらなる分析要約する背景私のコース「Vue 3 エンタープライズレベルの音楽アプリ...

CentOS 8 VMware 仮想マシンがインターネットにアクセスするための静的 IP ネットワーク カードの設定の詳細な説明

最初のステップ: VMwareで、「編集」-「仮想ネットワークエディタ」をクリックします。下図に示す...

MySQL 5.7.18 無料インストール版ウィンドウ設定方法

初めてのブログです。データベースの勉強を始めた頃のことを書いています。自分でダウンロードしたのですが...

MySQLデータベースの共通操作スキルのまとめ

この記事では、MySQL データベースの一般的な操作テクニックをまとめます。ご参考までに、詳細は以下...

MySQL 5.7.21 解凍バージョンのインストールと設定のグラフィックチュートリアル

この記事では、MySQL 5.7.21の解凍版をダウンロードしてインストールする詳細な手順を記録して...

MySQL並列レプリケーションの簡単な説明

1. 並列レプリケーションの背景まず、並列レプリケーションの概念はなぜ存在するのでしょうか? 1. ...

Ubuntu 18.04 システムでの Redis および phpredis 拡張機能のインストールと設定の詳細な説明

この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...

grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

背景ご存知のとおり、nginx は高性能な Web サーバーであり、負荷分散やリバース プロキシによ...

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free...