angularjs benutzerdefinierte bestätigen-box
So, ich bin versucht zu implementieren eine benutzerdefinierte bestätigen-box mit Winkel. Im Idealfall würde ich einfach gern ein Attribut hinzuzufügen um die Funktionalität zu aktivieren. Beispiel:
<button type="button" ng-click="delete(foo)">Delete</button> -> <button type="button" ng-click="delete(foo)" ng-confirm="Are you sure you want to delete this foo?">Delete</button>
(foo ist in einem ng-repeat... foo in fooList..)
So, alle Probleme, die ich habe drehen sich um das binden des click-Ereignisses, das normalerweise geschehen würde, um eine andere Taste. Ich habe eine separate Richtlinie "confirmBox" zu schaffen, der meine modal (nicht mit bootstrap) und behandeln alle zeigen/ausblenden/etc.
Was ich momentan verwende, muss ich mein alter ng-click-Funktionen, die ich wirklich wollen, um Weg von:
Aktuelle Implementierung:
<button ... ng-click="confirm('Are you sure you want to delete this foo?, 'delete', foo)">Delete</button>
var confirmModule = angular.module('confirm', []);
confirmModule.run(function($rootScope) {
$rootScope.confirm = function(text, func, obj) {
$rootScope.$broadcast('confirm', func, obj, text);
};
});
confirmModule.directive('confirmBox', function($parse) {
return {
restrict: 'A',
template: myModalTemplate,
link: function(scope, element, attrs){
element.hide();
var noBtn = element.find("[name='no']");
noBtn.bind("click", function() {
element.hide();
});
scope.$on("confirm", function(event, func, obj, text) {
var yesBtn = element.find("[name='yes']");
element.show();
yesBtn.unbind("click").bind("click", function() {
scope[func](obj);
});
});
}
}
});
Jemand irgendwelche Ideen? Ich begann, indem die Richtlinie für die Schaltfläche und dann unverbindlich das click-Ereignis so ng-click
nicht ausgelöst. Dann bin ich Links mit der Zeichenfolge 'delete(foo)'
von der ng-click
Attribut, das ich ausführen kann, mit $parse(attrs.ngClick)(scope)
, aber ich weiß nicht, wie zu binden, dass Sie in separaten Richtlinien-button klicken.
Edit: Hier ist ein Turnschuh mit meinem aktuellen Versuch der Umsetzung. Das problem ist die variable, die übergeben wird in der Funktion ist immer undefiniert.
Edit2: Aktualisierung, Umsetzung, jedoch glaube ich nicht so besonders, wie es links der beiden Richtlinien zusammen, durch welche die anderen Richtlinien-Elemente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es mir, dass du versuchst, Dinge zu tun, die jQuery-Weg aus der Richtlinie. Jedoch, was Sie wollen, ist so einfach wie das ziehen in den UI-Bootstrap-Richtlinie für die Bestätigung von Aktionen. http://plnkr.co/edit/JhfAF1?p=preview
Ersten einfachen service für modale Fenster:
Dann einfache Richtlinie, in dem es verwendet:
Und hier u go:
http://plnkr.co/edit/LOZOnsVyx3JU5XoKYn74?p=preview
Erlauben eine Taste markiert werden, wie
Schreiben Sie eine Richtlinie, die
ngClick
's click-handler ausgeführt werden kann$modal
und nicht entfernt$dialog
)close
im dialog (die behandelt wird als ein Erfolg) führen Sie die Funktion angegeben, die von derngClick
Attribut auf das element.Stützen den code auf die Vorherige Antwort, können Sie dies wie folgt:
welche einen einfachen controller:
und eine Vorlage für den dialog:
Können Sie sehen, dieses läuft bei http://plnkr.co/edit/Gm9lFsGb099w6kCMQoVY?p=preview
Edit: geändert plunker link zum Beispiel ohne scrollbar erscheinen/verschwinden auf dem display der dialog
Hier ist eine schöne Richtlinie für, die.Das ist
ngBootbox
. Überprüfen Sie es heraus.Demo
ngBootbox
Erstellte ich ein repo für diese Funktionalität. Es umschließt die ui-bootstrap-modal zu produzieren, die ein Dialogfeld zur Bestätigung. Es ist anpassbar und leicht integrierbar in jede Anwendung.
Hier ist der link zum GitHub: https://github.com/Schlogen/angular-confirm
Beispiel:
Als Richtlinie:
As a service:
Ok, hier ist die, die ich landete mit
1) Erstellen Sie einen Dienst für den dialog
2) der controller erstellt und übergeben Sie die Modell-Instanz in der es
3) link in den header zu nehmen, die auf Standard-styling
4) überschrieb das styling in meine eigene css -
5) Hier ist mein Löschvorgang Vorlage
Hier kurz für Sie - http://plnkr.co/edit/YklthDZcknmvMjU5A6pe?p=preview
Also im Grunde, wenn Sie daran interessiert sind, in zeigt ein modales Dialogfeld, sobald ein Benutzer klickt auf lassen Sie uns sagen, ein Knopf, es gibt keine Notwendigkeit, um es schwierig zu machen.
Alles, was Sie brauchen, ist eine einfache Richtlinie, die Kapseln
$modal
service gefunden im ui-bootstrap.In meinem einfachen Beispiel habe ich mich nur übergeben Sie eine Zeichenfolge, die eine Nachricht und dann die Definition eines
on-confirm
Attribut, dass meine Richtlinie aufruft, sobald der Benutzer bestätigt. Aufruf der Funktion selbst nutzt die awesomeness$parse
zu beheben, den Ausdruck und wenn der Fall geklärt ist, rufen Sie es mit dem Rahmen.Schön und klar und hier ist, wie es aussieht.
Ansicht
Controller /Richtlinie