2014-07-01 15 views
6

W tym kodzie:Aktualizacja modelu naciskiem traci na kontroli wejściowej

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

angularjs zaktualizuje model actionText jako rzeczy użytkownik wpisze Jeśli ten model jest używany w innych miejscach, takich jak w sterowniku. jest aktualizowany po wpisaniu każdego znaku. Mogę wymyślić sytuacje, w których to może być naprawdę złe. Może chcesz tylko wartość modelu PO przeniesieniu przez użytkownika fokusu z wejścia na coś innego, na przykład wtedy, gdy musisz zweryfikować dane wejściowe po zakończeniu. Mógłbym użyć funkcji rozmycia JavaScriptu, aby skonfigurować program obsługi, aby określić, kiedy utracono ostrość, ale który wydaje się być sprzeczny ze sposobem, w jaki ma wyglądać Angular. Czy istnieje sposób aktualizacji modelu AngularJS po utracie ostrości?

Odpowiedz

15

Można użyć dyrektywy ngModelOptions do tego. Dzięki ngModelOptions możesz dalej udoskonalić sposób działania dyrektywy ngModel. Aby osiągnąć to, co prosiłeś, można go używać tak:

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

można znaleźć dalsze informacje i działający przykład w kątowym dokumentacji: https://docs.angularjs.org/api/ng/directive/ngModelOptions

+0

Czy działa to w gałęziach od 1.3? – lucuma

+0

Czy byłby to zalecany sposób sprawdzania poprawności? Innymi słowy, po utracie koncentracji, chcesz sprawdzić dane wejściowe dla jakiegoś wzoru (adres, numer telefonu itp.). – AndroidDev

+0

@lucuma Nie wiem, czy działa w starszych gałęziach. – Nikolas

2

Myślę, że najprostszym sposobem może być po prostu użycie ng-blur, aby odpalić coś, co chcesz zrobić.

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

zrobić jak NG-modelarzy opcji jak pisał autor: @Nikolas. Zależy od przypadku użycia i wersji kątowej. – lucuma

Powiązane problemy