Was ist der Unterschied zwischen "Entlassen" eines Modals und "Schließen" eines Modals in Angular UI-Bootstrap?


81

Was ist der Unterschied zwischen "Entlassen" eines Modals und "Schließen" eines Modals?

close(result) - a method that can be used to close a modal, passing a result
dismiss(reason) - a method that can be used to dismiss a modal, passing a reason

Antworten:


89

Die Antwort finden Sie in der Dokumentation direkt nach den beiden von Ihnen zitierten Zeilen:

Die open-Methode gibt eine modale Instanz zurück, ein Objekt mit den folgenden Eigenschaften:

  • close (Ergebnis) - Eine Methode, mit der ein Modal geschlossen und ein Ergebnis übergeben werden kann
  • entlassen (Grund) - eine Methode, mit der ein Modal entlassen werden kann, wobei ein Grund übergeben wird
  • Ergebnis - ein Versprechen, das gelöst wird, wenn ein Modal geschlossen wird, und abgelehnt wird, wenn ein Modal entlassen wird

Das Wichtigste dabei ist, was mit dem Versprechen passiert. Zum Abschluss ist das Versprechen gelöst - im Wesentlichen wird der Rückruf "Erfolg" ausgelöst. Bei der Entlassung wird das Versprechen abgelehnt, weshalb stattdessen der Rückruf "Fehler" ausgeführt wird.


33
Das Wichtigste dabei ist, was mit dem Versprechen passiert. Zum Abschluss ist das Versprechen gelöst - im Wesentlichen wird der Rückruf "Erfolg" ausgelöst. Bei der Entlassung wird das Versprechen abgelehnt, weshalb stattdessen der Rückruf "Fehler" ausgeführt wird.
Brian

Ich habe hier eine zusätzliche Frage: Was bedeutet aus Sicht der Benutzeroberfläche, den Dialog zu schließen? Soweit ich weiß, kann der Dialog vom Benutzer entweder mit "OK" oder mit "Abbrechen" (auch mit "x" im Fenster) geschlossen werden. Wie kann es von der Benutzeroberfläche entfernt werden? Vielen Dank im Voraus
lm.

1
Es bedeutet, was Sie wollen, dass es bedeutet. Die Vorlage des Dialogs liegt bei Ihnen. Sie können 4 Schaltflächen in der Vorlage haben, von denen zwei sie jeweils mit einem eigenen Grund schließen und zwei sie jeweils mit einem eigenen Ergebnis schließen. Schauen Sie sich die Demo unter angle-ui.github.io/bootstrap an : Die Schaltfläche OK ruft ok () auf, wodurch der Dialog mit einem ausgewählten Element geschlossen wird, und die Schaltfläche Abbrechen ruft cancel auf (), wodurch der Dialog mit geschlossen wird 'stornieren' als Grund.
JB Nizet

1
Danke, aber ich habe noch eine Frage dazu: Was ist die wahre Bedeutung von Entlassung? Ist es wie nah ohne Versprechen? Und der Grund, was ist sein Hauptzweck? Was ist der Unterschied zwischen einer Entlassung mit "foo" oder mit "bar"? Ich verstehe nicht, wie man diesen Parameter benutzt ... Wenn jemand erklären kann ...
M'sieur Toph '12.

@ M'sieurToph 'Der Grund liegt ganz bei Ihnen. Sie können sich vorstellen, zwei Schaltflächen "Nein, nie" und "Vielleicht später" zu haben, die beide das Modal schließen, aber aus einem anderen Grund, was zu einem anderen Ergebnis führt.
JB Nizet

2

Ich fand, dass das Löschen eines Modals am besten zu verwenden ist, wenn es von einem Benutzer stammt, der das Modal schließt (z. B. in den Zustand hinter dem Modal zurückkehrt und state.go aufruft ('^')), und das Schließen des Modals verwendet wird beim Ändern des Status über $ state.go oder ui-sref.

Auf diese Weise können Sie das resultVersprechen nutzen, um verschiedene Dinge zu tun, je nachdem, was passiert.

result.then(function() { /* state change via ui-sref */ })

result.catch(function() { /* user closed modal */ })


1
Dies ist wichtig, da das Versprechen nicht aufgelöst wird, wenn ein Modal entlassen wird. Dies bedeutet, dass Sie einen Konsolenfehler erhalten, es sei denn, Sie fangen den Fehler ab. Ich bin kein großer Fan, da Entlassung oft zum Abbrechen verwendet wird, was kein wirkliches Problem ist. Das Implementieren eines Catch verhindert, dass der Fehler ausgelöst wird.
Jared Sol

Bei dieser Antwort wird davon ausgegangen, dass der Benutzer die Drittanbieter- ui-routerBibliothek verwendet, was nicht immer der Fall ist (und die Frage auch nicht enthält).
Runderworld
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.