2013-03-14 13 views
18

Mam formularz, który ma przycisk usuwania, chciałbym utworzyć okno potwierdzenia, które pojawia się po kliknięciu przycisku usuwania. Przycisk usuwania działa obecnie. Próbowałem kilku rzeczy w javascript bez powodzenia. Używam Angular.Utwórz alert potwierdzenia dla przycisku usuwania w Angular przy użyciu JS

Czy to najlepsze podejście?

Ponadto, czy ktoś wie o jakichkolwiek przykładach tego, nie znalazłem żadnej z tych prac.

$(document).ready(function(){ 
    $("form").validate(); 
    $(".radius small success button").ConfirmDialog('Are you sure?'); 
}); 
+0

Co powiesz na prawdziwy kod zamiast kodu psuedo - pokaż nam, co próbujesz, i wskaż, co nie działa. –

+0

@MarkRajcok to sprawiedliwe, dodałem to, co mam. Jakieś myśli, czy jestem we właściwym kierunku? – FluxEngine

Odpowiedz

9

ten sposób jesteśmy obsługi naszego 'okna dialogowe potwierdzenia' (używając bootstrap)

znaczników

<div class="alert alert-block alert-error notification fade in" data-ng-show="displayLocationDeletePopup"> 
    <h6>Are you sure you want to delete this location?</h6> 
    <div class="form-controls-alert"> 
     <a href="" class="btn" data-ng-click="showDeleteLocationPopup(false)">No</a> 
     <a href="" class="btn btn-danger" data-ng-click="deleteVendorLocation(locationId)">Yes</a> 
    </div> 
</div><!-- end alert -->  

ustawień modelu false od obciążenia regulatora ukryć domyślnie z ng-show

$scope.displayLocationDeletePopup = false; 

Po kliknięciu zdarzenia w celu wyświetlenia okienka wyskakującego wywołanie funkcji/pa enki model

<i class="icon-remove" data-ng-click="showDeleteLocationPopup(true, location)"></i> 

w kontrolerze:

$scope.showDeleteLocationPopup = function(options, id) { 
    if (options === true) { 
     $scope.displayLocationDeletePopup = true; 
    } else { 
     $scope.displayLocationDeletePopup = false; 
    } 
    $scope.locationId = id; 
}; 

I za kotwic w HTML powyżej, może albo zamknąć okienko lub uruchomić funkcję

$scope.deleteVendorLocation = function (storeLocation) { 
    // Code to run on confirmation    
}; 
+1

Podoba mi się ten dla użytkowników bootstrap. –

29

Here jest inny podejść do tego. Zasadniczo jest to dyrektywa, która otrzymuje ciąg ostrzeżenia, który chcesz pokazać, oraz funkcję, która ma zostać wywołana, jeśli użytkownik ją zaakceptuje. Przykład użycia:

<button type="button" ng-really-message="Are you sure?" 
ng-really-click="delete()">Delete</button> 
+3

Podstawowe okno przeglądarki może być wyświetlane bez dyrektywy 'if (confirmim (" Jesteś pewien? ")) {Do Something}' robi ** dokładnie ** to samo, co znacznie mniej narzut. – Malkus

+1

W odpowiedzi należy podać cały kod rozwiązania. – Malkus

+1

Zawarł on niezbędny kod - kliknij na słowo "Tutaj".I nie, nie można użyć potwierdzenia za pomocą ng-click, ponieważ nie można kontrolować przepływu wewnątrz tych wyrażeń. –

39

Wygląda na to, że dyrektywa AngularJS jest nieco przesadzona, jeśli chodzi o rozwiązanie tego problemu. Łatwiej jest po prostu użyć prostego javascriptu, chyba że potrzebujesz jakiejś niestandardowej funkcji do funkcji "confirm()".

if (confirm('Are you sure you want to delete this?')) { 
    // TODO: Do something here if the answer is "Ok". 
} 

Nadzieja to pomaga, okrzyki

UPDATE: Właściwie z kątowa, byłoby lepiej jest użyć $ window.confirm co pozwoliłoby na przetestowanie z Karma/Jasmine.

+2

dobre myślenie. szukał tego –

+1

, to działałoby dobrze, dopóki użytkownik nie zdecyduje się na wyświetlanie alertów/potwierdzeń w Chrome. W przeglądarce Chrome po potwierdzeniu pojawia się pole wyboru "nie wyświetlaj takich wiadomości". I zniknęło. –

+0

Oczywiście, ale alerty są domyślnie włączone. Aby temu zapobiec, dyrektywa obsługująca pola alertów bez użycia metody confirm() naprawiłaby to. –

-1
var r = confirm("Are you sure you want to Permanently delete this order?"); 
if (r == true) { 
    (OK button click) Write the function here..... 
} else { 
    (Cancle button click) Write the function here..... 
} 
-1

Place Usuń opcję na prawej stronie każdego rekordu i kliknąć opcję Usuń rekord powinien dostać usunięty ze szczegółami i JSON tablicy.