5

Ho un piccolo problema. Voglio impostare lo sporco su un singolo input, voglio dire, perché quando assegno un valore automaticamente rimane nella classe pristine, non cambia e non salva il nuovo valore.

Se lo modifico, funziona e cambia la classe. Voglio annullare la classe pristine. Se qualcuno lo sa, per favore fatemelo sapere.

<form class="form-horizontal" ng-repeat="studiant in studiants" name="form" id="form"> 

    <input type="hidden" name="id" value="{{studiant.studiant_id}}" class="form-control" disabled> 

    <div class="form-group"> 
    <label for="school" class="col-md-2 control-label">School</label> 
    <div class="col-md-1"> 
     <input type="text" id="school" name="school" class="form-control" ng-init="studiant.school=studiant.studiant_school" ng-model="studiant.school"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label for="name" class="col-md-2 control-label">Student's Name</label> 
    <div class="col-md-10"> 
     <input type="text" id="name" name="name" class="form-control" ng-init="studiant.name=studiant.studiant_name" ng-model="studiant.name"> 
    </div> 
    </div> 
</form> 

e lo script:

document.getElementbyId('name').value = "anything"; 

O, se io che faccio male e devo cambiare il value con ng-model o qualcosa del genere, ti prego, aiutami.

+1

Puoi fare come questo '$ scope.form.fieldName. $ Dirty = true;' – Anita

+0

Ho provato e mi lancia un errore. Impossibile leggere la proprietà 'nome' di undefined –

+0

Potrebbe accadere che il modulo non sia stato inizializzato, quindi racchiudere questo all'interno di questa funzione '$ scope. $ On ('$ viewContentLoaded', function() {...}' Prova anche dopo aver cambiato il nome della forma e il nome del campo in un altro nome – Anita

risposta

5

http://plnkr.co/edit/bVoljJqiK3CLB2xqZ6Zm?p=preview

Si può vedere un esempio di lavoro lì.

Assicurarsi di avere il nome attr impostato per il modulo e l'input.

HTML Esempio:

<button id="dirty-button" ng-click="addText(); myForm.myText.$setDirty()">Make Dirty</button> 
<hr> 
<form name="myForm"> 
<input name="myText" id="myTextInput" type="text" ng-model="myText" required> 
</form> 
<br/> 
<span ng-show="myForm.myText.$dirty">it's dirty now</span> 

una semplice funzione:

$scope.addText = function() { 
    $scope.myText = "now I'm dirty"; 
} 
+0

Sarebbe meglio se aggiungesse le parti rilevanti del codice alla risposta. Immagina che il link di plnkr non funzioni, quanto la tua risposta avrà senso se qualcuno cerca risposte –

-1

Questo dovrebbe fare il lavoro

angular.element(document.querySelector('form')).scope().formname.fieldname.$setDirty()

+3

Elaborare e spiegare la risposta. – slybloty

0
$scope.$on('$viewContentLoaded'){ 
$scope.form.fieldName.$dirty = true; 
} 

Quando la vista viene caricata quindi chiamate angolari evento viewContentLoaded viene chiamato. Dopodiché puoi impostare il campo sporco. E anche se vuoi chiamare qualche metodo, che dovrebbe essere eseguito dopo che il contenuto è stato caricato, dovresti chiamare quel metodo all'interno di questo $scope.$on('$viewContentLoaded'){..}

Problemi correlati