2013-03-14 17 views
18

Ho un modulo con un pulsante di eliminazione, vorrei creare una finestra di conferma che si apre quando si fa clic sul pulsante Elimina. Il pulsante Elimina attualmente funziona. Ho provato diverse cose in javascript senza fortuna. Sto usando Angolare.Crea un avviso di conferma per il pulsante Elimina in Angolare utilizzando JS

Questo è l'approccio migliore?

Inoltre, qualcuno sa di esempi per questo, non ho trovato alcun lavoro.

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

Che ne dici di un codice reale anziché del codice psuedo: ti preghiamo di mostrarci cosa hai provato e di indicare cosa non funziona. –

+0

@MarkRajcok questo è giusto, ho aggiunto quello che ho. Qualche idea sono nella giusta direzione? – FluxEngine

risposta

9

Questo è il modo in cui stiamo movimentazione nostri 'finestre di dialogo di conferma' (usando bootstrap)

Il Markup

<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 -->  

modello impostazione su false sul carico di controllo per nascondere di default con ng-show

$scope.displayLocationDeletePopup = false; 

Al clic su evento per popup di presentazione, chiama una funzione/pa SSES modello

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

Nel controllore:

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

E per le ancore nel codice HTML di cui sopra, può chiudere il popup o eseguire la funzione

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

Mi piace questo per gli utenti bootstrap. –

29

s' Here un'altra approccio a questo. Fondamentalmente è una direttiva che riceve la stringa di avviso che si desidera mostrare e la funzione da chiamare se l'utente accetta. Esempio di utilizzo:

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

Una finestra di dialogo di base del browser può essere visualizzata senza una direttiva 'if (confirim ('Are you sure?')) {Do Something}' fa la ** esatta ** stessa cosa che molto meno overhead. – Malkus

+1

Si prega di includere tutto il codice per la soluzione nella risposta. – Malkus

+1

Ha incluso tutto il codice necessario: fare clic sulla parola "Qui".E, no, non puoi usare conferma con ng-clic perché non puoi avere il controllo del flusso all'interno di quelle espressioni. –

39

Sembra una direttiva AngularJS un po 'esagerata per una soluzione a questo. Sembra più facile usare il javascript dritto a meno che non si abbia bisogno di alcune funzionalità personalizzate per la funzione "confirm()".

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

Spero che questo aiuti, applausi

UPDATE: In realtà, con angolare, sarebbe meglio usare $ window.confirm in quanto ciò consentirebbe di testare con il Karma/Jasmine.

+2

buon pensiero. stavo cercando quello –

+1

questo funzionerebbe benissimo fino a quando l'utente sceglie di non visualizzare avvisi/conferma in Chrome. In Chrome, quando ottieni una conferma, c'è una casella di controllo "non mostrare messaggi come questo". Ed è andato. –

+0

Certo, ma gli avvisi sono attivi per impostazione predefinita. Per evitare ciò, una direttiva che gestisce le caselle di avviso senza usare confirm() lo risolverebbe. –

-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

Luogo Elimina opzione sul lato destro di ogni record e cliccando l'opzione di eliminazione del record dovrebbe avere cancellato dai dettagli e di matrice JSON.

Problemi correlati