2016-04-28 8 views
1

Ich habe angefangen mit Angular und habe nicht viel Erfahrung darin.
Ich bin mit einem Problem fest. Ich benutze ng-show und ng-model.binde einen anderen Wert an ng-Modell unter bestimmten Bedingungen

seine wie

<tr ng-show="responseValid"> 
    <td> <input id="nameId" ng-model="model.name"/> </td> 
</tr> 

ich den Wert in model.name Pre-bevölkern.

Jetzt, wenn die Antwort gültig ist, wird das Eingabe-Tag sonst nicht angezeigt.

aber wenn ich die Form submit, nameId Wert von ng-model="model.name "

Ausgabe hier binden, ist, ich will model.name keinen Wert enthalten sollte, wenn Antwort nicht gültig, dh, wenn die Input-Tag verborgen ist. Aber es ist nicht passiert.

Wie kann ich nullify/empty den Wert in model.name? gibt es etwas zur Verfügung, die ich im Tag selbst verwenden kann?

+0

Wollen Sie löschen möchten der Text aus dem Input-Tag im nicht gültigen Fall? – Prasad

Antwort

1

Wenn Ihr Sende Ihr Modell, um den Zustand des validResponse überprüfen und Ihre Modelldaten in diesem

Beispiel auf Basis gesetzt:

$scope.sendModel = function(){ 
    $scope.model.name = $scope.validResponse? $scope.model.name : ''; 
} 

Eine fortgeschrittenere Beispiel http://codepen.io/gpincheiraa/pen/mPzmxO

2

Sie ngSwitch oder ngIf verwenden können.

<tr ng-if="responseValid"> 
    <td> <input id="nameId" ng-model="model.name"/> </td> 
</tr> 

Wenn die Bedingung nicht erfüllt ist, entfernt angular das DOM-Element vollständig, bis die Bedingung erfüllt wird.

3

Sie sollten ng-if anstelle von ng-show verwenden, glaube ich.

ng-if entfernt Elemente aus dem DOM, während ng-show nur display:none setzt.