2014-07-01 31 views
6

In diesem Code:Updating Modell nach dem Fokus auf Eingabesteuerung verloren

<input class="form-control" ng-model="actionText" /> 

AngularJS wird das Modell Actiontext als Benutzertypen Sachen in aktualisieren Wenn dieses Modell an anderer Stelle verwendet wird, wie in einer Steuerung. Es wird aktualisiert, wenn jedes Zeichen eingegeben wird. Ich kann mir Situationen vorstellen, in denen das wirklich eine schlechte Sache sein könnte. Vielleicht möchten Sie nur den Modellwert, NACHDEM der Benutzer den Fokus von der Eingabe auf etwas anderes verschoben hat, z. B. wenn Sie die Eingabe nach Abschluss bestätigen müssen. Ich könnte die Verwischungsfunktion von Javascript verwenden, um einen Handler einzurichten, um zu bestimmen, wann der Fokus verloren geht, aber das scheint gegen die Art zu sein, wie Angular sein soll. Gibt es eine AngularJS-Methode zur Aktualisierung des Modells, nachdem die Eingabe den Fokus verloren hat?

Antwort

15

können Sie die ngModelOptions Richtlinie für diese. Mit ngModelOptions können Sie weiter verfeinern, wie die ngModel Direktive funktioniert. Um das zu erreichen, was Sie gefragt, können Sie es wie folgt verwenden:

<input class="form-control" ng-model="actionText" 
    ng-model-options="{ updateOn: 'blur'}"/> 

Sie weitere Informationen und ein funktionierendes Beispiel in dem Winkel Dokumentation finden: https://docs.angularjs.org/api/ng/directive/ngModelOptions

+0

Funktioniert das in vor 1.3 Filialen? – lucuma

+0

Wäre dies der empfohlene Weg zur Validierung? Mit anderen Worten, nachdem Sie den Fokus verloren haben, möchten Sie die Eingabe für ein Muster (Adresse, Telefonnummer usw.) bestätigen. – AndroidDev

+0

@lucuma Ich weiß nicht wirklich ob es in älteren Filialen funktioniert. – Nikolas

2

Ich denke, der einfachste Weg könnte einfach ng-blur verwenden, um etwas abzufeuern, was Sie tun möchten.

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

app.controller('MainCtrl', function($scope) { 

    $scope.myDataBlurred = $scope.myData; 

    $scope.blurred = function() { 
    $scope.myDataBlurred = $scope.myData; 
    } 
}); 

<input ng-model='myData' ng-blur='blurred()' /> 

    <div> 
     This will update as you type: {{myData}} 
    </div> 
    <div> 
     This will update after you blur: {{myDataBlurred}} 
    </div> 
+0

ich wie die ng-Modell-Optionen tun, wie geschrieben von Nikolas. Abhängig von Ihrem Anwendungsfall und der Version von eckig. – lucuma

Verwandte Themen