Angularjs Formular-Validierung mit Richtlinien
Habe ich eine überprüfung der Richtlinie genannt valid-number
, die verwendet wird, um die Gültigkeit einer form mit $setValidity - dies funktioniert gut für text-Werte, die ich geben in das Eingabefeld, in dem die Richtlinie angewendet, die als ein Attribut.
HTML
<form name="numberForm">
<input name="amount" type="text" ng-model="amount" required valid-number /></form>
In der Richtlinie wird wie folgt
angular.module('test',[]).directive('validNumber',function(){
return{
require: "ngModel",
link: function(scope, elm, attrs, ctrl){
var regex=/\d/;
ctrl.$parsers.unshift(function(viewValue){
var floatValue = parseFloat(viewValue);
if(regex.test(viewValue)){
ctrl.$setValidity('validNumber',true);
}
else{
ctrl.$setValidity('validNumber',false);
}
return viewValue;
});
}
};
});
Jedoch möchte ich auch die Validierung angestoßen werden, und legen Sie die css auf eine ungültige clsss, wenn der Wert der input-box wird initialisiert, wenn die Seite zum ersten mal geladen wird ungültig, wenn ich z.B. set $scope.amount = 'not a number'
ich würde erwarten, dass die input-box gehabt zu haben, die Richtlinie angewendet wurde, aber keine Freude. Um für not a number
hervorgehoben werden als ungültig ich habe eine änderung vornehmen, um den Inhalt des input-die Auslöser der Richtlinie.
Wie kann ich sicher gehen, dass die Richtlinie gilt unabhängig von der <input>
wird initialisiert mit?
Einer vollständigen code-Beispiel ist hier;
Du musst angemeldet sein, um einen Kommentar abzugeben.
$parsers
array enthält eine Liste von Funktionen, die angewendet werden, um den Wert, den das Modell bekommt von der Ansicht (was der Benutzer eingibt), und$formatters
array enthält die Liste der Funktionen, die angewandt werden, um das Modell Wert ist, bevor es in der Ansicht angezeigt.In Ihre Richtlinie Sie korrekt verwendet, die
$parsers
array ist, aber Sie müssen auch hinzufügen, die$formatters
array-wenn Sie möchten, dass der erste Wert überprüft werden:Demo-plunker
Können Sie einfach aufrufen von Verifizierungs-Funktion bei der Verlinkung phase, wie in diesem fiddle :
Nachdem (>=) Winkel-1.3.1-version veröffentlicht wurde, die Sie implementieren können, das Verhalten mit ein wenig richtige Weg ist, folgende Winkel-Validierung-Direktiven Stil (z.B. erforderlich, maxlength).
In diesem Fall müssen Sie hängen Sie Ihre Prüfer als Eigenschaft von
$validators
array und es gibt keine Notwendigkeit, in$parsers
oder$formatters
mehr:JS:
CSS:
HTML: