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 システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

推薦する

jsはフォーム検証機能を実装します

この記事の例では、フォーム検証機能を実装するためのjsの具体的なコードを参考までに共有しています。具...

キーボード上の各種特殊記号の英語読み方(知識の普及)

キーボード文字英語`バッククォート〜チルダ!叫ぶ@で#ナンバーサイン$ドル%パーセント^キャレット&...

CocosCreatorでWeChatゲームを作成する方法

目次1. WeChatパブリックプラットフォームからWeChat開発者ツールをダウンロードする2. ...

MySQL テーブルを作成するためによく使用される SQL ステートメントの概要

最近、私はプロジェクトに取り組んでおり、背景を記述するために SQL ステートメントを使用する必要が...

jsはFileReaderを使用してローカルファイルまたはBLOBを読み取ります

目次FileReaderはローカルファイルまたはBLOBを読み取ります1. FileReaderの使...

href をクリックした後にページがジャンプしないようにするための空のリンクの正しい書き方 # 問題

リンクを使用する必要がある場合もありますが、リンクする必要はありません。onclick イベントを処...

純粋な CSS3 で水平無限スクロールを実装するためのサンプル コード

この記事の例はすべて小さなプログラムで書かれていますが、実装される機能には影響しません。 wxmlル...

Vue で計算プロパティを使用する際の知識ポイントのまとめ

計算されたプロパティ場合によっては、テンプレートにロジックを詰め込みすぎると、テンプレートが重くなり...

JavaScript 文字列操作の 4 つの実用的なヒント

目次序文1. 文字列を分割する2. JSONのフォーマットと解析3. 複数行の文字列と埋め込み式4....

Vueアイコンセレクターのサンプルコード

出典: http://www.ruoyi.vip/ 'vue' から Vue をイン...

Linux 仮想マシンの IP アドレスを変更し、ゲートウェイを確認し、ネットワーク環境を構成する方法に関するチュートリアル

仮想マシンの IP アドレスを変更します。 次のインターフェイスに入り、サブネット IP を直接変更...

インスタンス化されたオブジェクトパラメータによるMySQLクエリ例の説明

この記事では、オブジェクト パラメータをインスタンス化して MySQL でデータをクエリする方法を紹...

Vue のスロットリング関数使用時の落とし穴ガイド

序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...

Vue3はCSSの無限シームレススクロール効果を実装します

この記事では、CSS無限シームレススクロール効果を実現するためのvue3の具体的なコードを参考までに...

Vueのフィルターとディレクティブの詳細な説明

目次vueカスタムディレクティブグローバル指令ローカル指示使用フック関数(両方ともオプション)使用方...