Lösung für den nicht funktionierenden Aufruf this.$notify.close() von ElementUI

Lösung für den nicht funktionierenden Aufruf this.$notify.close() von ElementUI

Anforderungsbeschreibung

Das Projekt erfordert zunächst, dass der Benutzer eine Frage auswählt. Nach der Auswahl wird die Benachrichtigungskomponente von ElementUI verwendet, um den Benutzer daran zu erinnern, dass das Dateiformat überprüft wird (es muss zuerst an das Backend übermittelt werden, vom Backend überprüft werden und dann werden die Ergebnisse an das Frontend zurückgegeben). Wenn die Formatprüfung korrekt ist, wird die Benachrichtigung geschlossen und eine MessageBox (ebenfalls eine Komponente von ElementUI) wird angezeigt, um den Benutzer darüber zu informieren, dass der Upload der Datei nicht rückgängig gemacht werden kann.

Problembeschreibung

Nachdem Sie überprüft haben, ob das Dateiformat korrekt ist, müssen Sie die entsprechende Funktion manuell aufrufen, um die Benachrichtigung zu entfernen. Laut der offiziellen Dokumentation funktionierte die Verwendung this.$notify.close() nicht und es wurde kein Fehler in der Konsole gemeldet.

Problemanalyse

Nachdem Sie this.$notify in der Konsole ausgedruckt haben, können Sie die Benachrichtigungsfunktionen wie unten gezeigt aufrufen:

Code unter dem Quellcodefenster der Konsole

Im Code können wir sehen, welche Funktionen in Notification gekapselt sind, einschließlich der Funktion close() , die zwei Parameter erfordert: id und userOnClose. Aus dem Code ist nicht schwer zu erkennen, dass die ID die ID der Benachrichtigung ist. Wenn beispielsweise mehrere Benachrichtigungen vorhanden sind, können diese selektiv geschlossen werden. userOnClose kann eine Funktion übergeben, die ein bisschen einer Rückruffunktion ähnelt. Wenn Sie die Funktion close() verwenden möchten, müssen Sie daher die ID der Benachrichtigung kennen, die Sie schließen möchten. Dies wird am Ende dieses Artikels kurz erläutert.
Wenn Sie sich den Code ansehen, können Sie sehen, dass es eine Funktion closeAll() gibt, die keine Parameter erfordert und alle Benachrichtigungen durch Durchlaufen schließt, was für das Szenario dieses Projekts geeignet ist (es muss nur eine Benachrichtigung geschlossen werden).

Problemlösung

Rufen Sie für dieses Projekt einfach this.$notify.closeAll() auf.

Fragenerweiterung

Die Hauptsache ist: Wenn es mehrere Benachrichtigungen gibt, was soll ich tun, wenn ich eine davon schließen möchte? Ich habe versucht, notify.js zu verstehen und habe festgestellt, dass die ID grundsätzlich ein Muster wie notification_seed ist, was wiederum ein String ist, der aus dem notification_-String plus einer Zahl besteht. Wenn wir uns den Quellcode ansehen, stellen wir fest, dass der anfängliche seed 1 ist, was bedeutet, dass die ID der ersten instanziierten Benachrichtigung notification_1 sein sollte. Wie in der Abbildung gezeigt:

Bildbeschreibung hier einfügen

Jetzt kommt das Problem. Ich rufe die Funktion close() auf und übergebe zwei Parameter, die korrekt zu sein scheinen, aber es funktioniert nicht:

Bildbeschreibung hier einfügen

Um mein Missverständnis bezüglich der ID zu vermeiden, habe ich sie im Browser debuggt und festgestellt, dass die ID in der Instanz (Instanz der Benachrichtigung) tatsächlich die ID war, die ich analysiert hatte:

Bildbeschreibung hier einfügen

Also habe ich das Debugging-Tool in den Entwicklertools verwendet, um die Ausführungsschritte der Funktion close() in notify.js Schritt für Schritt zu überprüfen. Ich habe festgestellt, dass es weder mit dem Code noch mit der Logik ein Problem gab. Schließlich haben Instanzen auch die Benachrichtigung mit der entsprechenden ID über die Splice-Funktion entfernt, aber die Benachrichtigung auf der Seite blieb dort und verschwand nicht (die Hauptfunktion befindet sich im rechteckigen Feld).

Bildbeschreibung hier einfügen

Das Obige sind einige meiner persönlichen Analyseversuche. Aufgrund meiner begrenzten Fähigkeiten konnte ich das Problem am Ende natürlich nicht lösen. Interessierte können es studieren.

Dies ist das Ende dieses Artikels zur Lösung des Problems, dass der Aufruf this.$notify.close() von ElementUI nicht funktioniert. Weitere verwandte Inhalte zum Aufruf this.$notify.close() von Element finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vue löst das Problem von Zeilenumbrüchen in Eingabeaufforderungsinformationen mithilfe von $notify im Element

<<:  MySQL 8.0.18 Hash Join unterstützt keine Links-/Rechts-Joins. Probleme mit Links- und Rechts-Joins

>>:  Detaillierte Erläuterung der Installationsbefehle für Linux-Systemsoftware basierend auf Debian (empfohlen)

Artikel empfehlen

Sublime Text - Empfohlene Methode zum Festlegen von Browser-Tastenkombinationen

Codeeffekte werden häufig in unterschiedlichen Br...

Zwei Möglichkeiten zum Erstellen von SSH-Server-Aliasen in Linux

Vorwort Wenn Sie häufig über SSH auf viele versch...

So erreichen Sie die maximale Anzahl von Verbindungen in MySQL

Inhaltsverzeichnis Was ist der Grund für den plöt...

So fügen Sie Codebeispiele für die Vim-Implementierung in Power Shell hinzu

1. Gehen Sie zur offiziellen Website von Vim, um ...

Vue-Vorlagenkonfiguration und Webstorm-Codeformatspezifikationseinstellungen

Inhaltsverzeichnis 1. Einstellungen für die Spezi...

Fallstricke bei der neueren Version des IDEA2021 Tomcat10-Servlets

Da die Version, die ich beim Lernen verwendet hab...

Linux entfernt node.js vollständig und installiert es über den Befehl yum neu

erster Schritt Einmaliges Löschen mit der integri...

Techniken zur Wiederverwendung von HTML

HTML-Wiederverwendung ist ein Begriff, der selten ...

So stellen Sie mit Navicat eine Remoteverbindung zur Cloud-Server-Datenbank her

Es ist sehr praktisch, eine Verbindung zu einer R...

Detailliertes Beispiel für die Verkettung mehrerer Felder in MySQL

Das Zusammenführen von Zeilen- und Feldergebnisse...

Eine "klassische" Falle der MySQL UPDATE-Anweisung

Inhaltsverzeichnis 1. Problematische SQL-Anweisun...