2013-10-18 19 views

risposta

25

Partendo release 1.2.0rc1 c'è una direttiva ng-blur

jsfiddle: http://jsfiddle.net/9mvt8/6/

HTML:

<div ng-controller="MyCtrl"> 
    <input type='text' ng-blur='blurCount = blurCount + 1'/> 

    <input type='text' ng-blur='blurCount = blurCount + 1' /> 

    blur count: {{blurCount}} 
</div> 

Script:

function MyCtrl($scope) { 
    $scope.blurCount = 0; 
    $scope.name = 'Superhero'; 
} 
+2

questo non è esattamente quello che voglio, se non ha ancora cambiare il valore, ma perdere la concentrazione di quel campo, sarà ancora attivare la funzione – 9blue

+2

si gestisce te stesso nel gestore della sfocatura. Se il valore cambia, fai ciò di cui hai bisogno, altrimenti non fare nulla. – Jason

+6

Questo funzionario impedisce la necessità di gestire la logica di modifica all'interno del gestore di sfocatura:

1

Se si utilizza ng-sfocatura, e poi (come ha detto Jason) usa l'h andler per verificare l'input class = "ng-dirty", che ti dirà se il valore di input è cambiato.

+0

ng-dirty è usato per l'intero modulo piuttosto che solo una casella di input. – dman

61

Usa ng-model-options

$scope.onchange = function() {} 
<input type="text" ng-model="x" ng-change="onchange()" ng-model-options="{updateOn: 'blur'}"/> 
+7

Questa dovrebbe essere la risposta accettata –

+0

Questa è la risposta, grazie – ctorx

Problemi correlati