2013-04-30 4 views
6

Ich schreibe eine Direktive, die nach Elementen suchen muss, die mit einer bestimmten Klasse aktualisiert werden, sagen wir .ng-invalid. Wie Sie wissen, wird .ng-invalid zu Formularelementen hinzugefügt, die ungültig sind.

Ich muss diese Elemente beobachten, um festzustellen, ob die Klasse hinzugefügt oder entfernt wurde.

Wie kann ich das erreichen?

Vielen Dank im Voraus

+0

können Sie Ihren Code mit Geige oder Plocker Demo teilen –

+0

Hier ist eine Dummy Geige für meine Anforderung. http://jsfiddle.net/aW7FD/ – Abilash

Antwort

5

Sie könnten $ eine Funktion sehen, die die Länge $(".ng-invalid") bekommt:

scope.$watch(function() { 
    return $(".ng-invalid").length; 
}, function (newVal, oldVal) { 
    if(newVal !== oldVal) { 
     console.log('changed!', newVal, oldVal); 
     // do your changes here 
    } 
}) 

Fiddle. In der Geige fügte ich ng-minlength="2" zu der ersten input hinzu. Geben Sie zwei Zeichen in dieses Feld ein, um den $ watch-Trigger zu sehen.

1

Wäre es ausreichend sein, für Ihre Zwecke das $invalid Attribut FormController zu sehen? Dadurch werden Sie von Änderungen an der ganzheitlichen ungültigen Status des Formulars mitteilen, zum Beispiel:

// Somewhere in your directive; formCtrl is the FormController 
scope.$watch(function() { 
    return formCtrl.$invalid; 
}, function(isInvalid, wasInvalid) { 
    // ... 
}); 
+0

Nein, das reicht nicht für meine Anforderung :-( – Abilash

Verwandte Themen