Angular UI Boostrap bietet einen Service - $dialog
- der überall dort eingegeben werden kann, wo Sie ein Dialogfeld verwenden müssen. Dieser Dienst hat zwei Hauptmethoden: dialog
und messageBox
. Der erste wird verwendet, um einen Dialog mit dynamischem Inhalt zu erstellen, und der zweite, um ein Nachrichtenkasten mit einem Titel, einer Nachricht und einer Reihe von Schaltflächen zu erstellen. Beide geben ein Versprechen zurück, sodass Sie das Ergebnis verarbeiten können, sobald es verfügbar ist.
Ich denke, dieser Ansatz funktioniert gut, weil es die irgendwie natürliche, imperative Art der Handhabung von Dialogen passt. Zum Beispiel, wenn der Benutzer auf eine Schaltfläche klickt, und Sie möchten einen Dialog zeigen, und dann das Ergebnis verarbeiten, könnte der Code wie folgt aussehen:
$scope.doSomething = function() {
$dialog.dialog().open().then(function(result) {
if (result === OK) {
// Process OK
}
else {
// Process anything else
}
});
}
Sie tatsächlich Richtlinien verwenden können, das gleiche zu tun, und vielleicht ist es scheint der richtige Weg dazu zu sein, da DOM-Manipulation involviert ist, aber ich denke, es wäre irgendwie peinlich, damit umzugehen. Das vorherige Beispiel würde etwa so aussehen:
<dialog visible="dialogVisible" callback="dialogCallback()"></dialog>
...
$scope.doSomething = function() {
$scope.dialogVisible = true;
}
$scope.dialogCallback = function(result) {
if (result === OK) {
// Process OK
}
else {
// Process anything else
}
}
IMO, das erste Beispiel sieht besser aus und es ist leichter zu verstehen.
Ich mag diesen Ansatz am besten. Noch besser, jemand hat sich die Zeit genommen, ein grundlegendes Programm zu implementieren: https://github.com/adamalbrecht/ngModal – joescii