2016-05-25 8 views
1

Hallo, ich habe ein kleines Problem. Ich habe eine Eingabezeile, die manchmal in einer Form angezeigt werden muss und manchmal nicht. Ich befürchte, wenn jemand Daten einlegt und sie dann ausblendet und auf Senden drückt, werden die Daten gesendet. Daher möchte ich die Eingabe jedes Mal zurücksetzen, wenn sie ausgeblendet ist.Klare Eingabe ng-Modell, wenn ng-show falsch ist AngularJS

ng-change ist keine gute Idee, weil es nichts schreiben lässt.

<div class="form-group" ng-show="isItOne=='1' || isItTwo=='2'"> 
    <label class="col-md-1">someName</label> 
    <div class="col-md-4"> 
    <input class="form-control" type="text" name="someOtherName" ng-model="nameModel" ng-change="clearWhenChanged()"> 
    </div> 
</div> 

und dies die Funktion

$scope.clearWhenChanged = function() { 
    $scope.nameModel = ""; 
}; 

Antwort

1

Nehmen Sie den Show-Zustand heraus und verwenden Sie ihn, um Sichtbarkeit und Modellwert zu kontrollieren.

$scope.showHideField = function(){ 
    if(isItOne=='1' || isItTwo=='2'){ 
     return true; 
    } 
    $scope.nameModel= ""; 
} 

nennen es in Ihrem div: <div class="form-group" ng-show="showHideField()">

dies bietet auch die Flexibilität, eine Flagge zu übergeben, auf deren Basis Sie entscheiden können, ob der Wert des Feldes oder nicht löschen .. :)

-1

das Tag-Attribut ng-if="your condition" verwenden ist, Dies wird den Tag nur machen, wenn die Bedingung erfüllt ist. Andernfalls wird die gesamte Eingabe aus DOM entfernt.

0

Sie könnten stattdessen eine Funktion aufrufen, in der Sie die Variable isItOne setzen. In dieser Funktion könnten Sie die Variable 1 oder 2und den Modellwert löschen.

HTML

<div class="form-group" ng-show="show()"> 
    <label class="col-md-1">someName</label> 
    <div class="col-md-4"> 
     <input class="form-control" type="text" name="someOtherName" ng-model="nameModel" ng-change="clearWhenChanged()"> 
    </div> 
</div> 

-Controller

$scope.show = function() { 
    if ($scope.isItOne == '1' || $scope.isItOne == '2'); 
     return true; 
    $scope.nameModel = ''; 
} 

alle gesagt haben, dass es könnte eine bessere Option sein, nur einfach ungesetzt den Wert des Modells in den Fällen einreichen, wenn Sie don Ich will nicht, dass es gesendet wird.