Grałem z tym przez długi czas, ale asynchroniczna natura Angulara sprawia, że trudno jest liczyć na to, że wszystkie dyrektywy będą ładnie współgrać ze sobą. Wtedy zobaczyłem odpowiedź @ tosh, która zmusiła mnie do myślenia.
myślę, że łączy w sobie wiele zalet: Tworzenie dyrektywę i Prepend ngClick
Więc, po prostu dodaj tę dyrektywę do aplikacji, a następnie dodać „potwierdzić kliknij” atrybut do linku, jak również funkcja confirmClick() do twojego ngClick.
Link:
<a href="#" ng-click="confirmClick() && deleteIt(id)" confirm-click>Delete</a>
dyrektywa:
.directive('confirmClick', function() {
return {
link: function (scope, element, attrs) {
// setup a confirmation action on the scope
scope.confirmClick = function(msg) {
// msg can be passed directly to confirmClick('are you sure?') in ng-click
// or through the confirm-click attribute on the <a confirm-click="Are you sure?"></a>
msg = msg || attrs.confirmClick || 'Are you sure?';
// return true/false to continue/stop the ng-click
return confirm(msg);
}
}
}
})
ta jest bardzo podobna do wstrzykiwania standardowego potwierdzenia() okna, ale dlatego, że masz go w dyrektywie, można dostosować sposób wybrać aby uruchomić okno dialogowe potwierdzenia (może całkiem modalne, zamiast okna dialogowego).
**** **** BONUS ODPOWIEDŹ
grałem z tego więcej i zintegrowane rozwiązanie, które wykorzystuje jako modalne okno potwierdzenia, a nie w oknie domyślnej. Oto kompletne rozwiązanie: https://stackoverflow.com/a/23718694/1135826
Bardzo ładne, to było rozwiązanie, którego szukałem, dzięki! – Soccertrash
To jest blisko, jak bym to zrobił .. Ale tutaj jest inny plunk, który działa prawie tak samo, z wyjątkiem nie obchodzi czy masz ng-kliknięcie czy nie .. http://plnkr.co/edit/Cwu15Z8U6ok0MMF8p6Ks? P = preview – ganaraj
@ganaraj: To nie działa, gdy klikam Anuluj, ponieważ 'createEventHandler' JQLite kontynuuje iterowanie po wszystkich powiązanych zdarzeniach i nie zatrzymuje drugiego' bind ('click', ...) 'od bycia wezwanym. (Moja przeglądarka: Chrome w wersji 26.0.1410.65 na Mac OSX 10.6.8) – Piran