2014-12-24 15 views
7

In AngularJS, c'è un modo per marcare una forma che è già stato presentato come non inviate (in modo che perde ng-submitted classeMark forma non inviate in AngularJS

Background:?

Nel mio css, ho 'm utilizzando le classi di convalida angolari per realizzare il seguente:.

  • Inizialmente, tutti gli ingressi hanno un normale colore del bordo
  • Se l'utente modifica un ingresso per avere un valore non valido, impostare il colore del bordo al rosso.
  • Se l'utente fa clic sul pulsante di invio, imposta il colore del bordo di tutti gli input non validi su rosso.

sto compiendo questo modo:

input.ng-dirty.ng-invalid, .ng-submitted .ng-invalid { 
    border-color: #F00; 
} 

che funziona bene. Ora ho un modulo che invia una richiesta asincrona, e se il server risponde con uno stato di successo, voglio cancellare il modulo (e resettarlo efficacemente al suo stato originale). Il problema è quando si cancella il modulo, esso ha ancora la classe .ng-submitted, quindi tutti i campi richiesti hanno un bordo rosso. Comunque voglio che abbiano tutti un bordo normale.

Dovrei essere in grado di contrassegnare tutti i campi come pristine utilizzando $setPristine(), ma non vedo alcun modo per contrassegnare il modulo come non inviato. È possibile o devo creare e mantenere la mia classe per farlo?

risposta

8

È possibile ripristinare il modulo e contrassegnarlo come unsubmitted utilizzando il seguente frammento di snippet.

Html:

<input type="button" ng-click="reset(form)" value="Reset" /> 

angolare Script:

$scope.reset = function(form) { 
    if (form) { 
     form.$setPristine(); 
     form.$setUntouched(); 
    } 
    $scope.user = angular.copy($scope.master); 
    }; 

Questa è stata scattata dal https://docs.angularjs.org/guide/forms

+1

Penso solo '$ form setPristine();' è necessario.. – PSL

+1

Grazie! Non mi ero reso conto che 'form. $ SetPristine()' avrebbe anche impostato '$ submit' su' false'. Userò ancora 'form. $ SetUntouched()', dato che anche il modulo dovrebbe essere considerato non trattato. Comunque non userò la cosa '$ scope.user' perché sembra che sia specifica dell'esempio a cui stai facendo riferimento. –

+0

Nessun problema. Sapevo che '$ scope.use' è irrilevante, ma non volevo danneggiare l'integrità dello snippet. Sono contento che ti abbia aiutato. –

Problemi correlati