2016-05-13 8 views
0

In meiner Angular App setze ich die Platzhalter in meiner Form durch einen Code in der Steuerung (zeigt bestimmten Text für bestimmte Tageszeiten).

Wenn ein Benutzer beginnt, in ein beliebiges Feld dieses Formulars einzugeben, möchte ich, dass alle Platzhalter gelöscht werden.

Um dies zu tun, ich verstehe, ich brauche $dirty verwenden $watch

$scope.$watch('myForm.$dirty', function() { 
    //clear the placeholders 
}, true); 

Meine Frage ist watch recht Leistung intensiv in dieser Situation mit oder gibt es eine optimierte Art und Weise?

Danke.

+0

Warum versuchen Sie Platzhalter von Controller statt Sie können es direkt auf Formular steuern? – Dhiraj

+0

Also, wenn ich bereits einen Text einbinden: '' würde ich dann ein 'ng-if' verwenden? Ist das eine bessere Leistung? – userMod2

+0

Warum versuchen Sie, Platzhalter dynamisch zu binden? – Dhiraj

Antwort

0

Wenn Sie $ dirty und $ watch verwenden, wird es funktionieren, aber es werden alle Platzhalter gelöscht, bevor Sie mit dem Typ oder der Controller-Auslastung beginnen. So können Sie versuchen, das ist seine Arbeit für mich.

<div ng-controller="Ctrl"> 
<input type="text" ng-model="name1" ng-change="change()" placeholder={{placeholder1}}> 
    <input type="text" ng-model="name2" ng-change="change()" placeholder={{placeholder2}}> 
    <input type="text" ng-model="name3" ng-change="change()" placeholder={{placeholder3}}> 
</div> 

function Ctrl($scope) { 
    $scope.placeholder1="name"; 
    $scope.placeholder2="city"; 
    $scope.placeholder3="address"; 

    $scope.change=function() { 
    $scope.placeholder1=""; 
    $scope.placeholder2=""; 
    $scope.placeholder3=""; 
    }; 
} 
Verwandte Themen