Das Verhalten der ngModelController-Analyse-Pipeline scheint sich zwischen Angular 1.2 und 1.3 geändert zu haben. Ich sehe jetzt immer einen neuen Validierungsschlüssel mit dem Namen 'parse'
, der allen $error
-Objekten hinzugefügt wurde, und wenn einer der Parser nicht definiert zurückkehrt, überschreibt/ersetzt er alle anderen Validierungsschlüssel, die möglicherweise bereits gesetzt wurden.Welchen Zweck hat der neue integrierte Parser-Validierungsschlüssel in Angular 1.3?
Zum Beispiel, hier ist ein funktionierendes Beispiel in Angular 1.2.23 - versuchen, eine Zahl außerhalb des zulässigen Bereichs eingeben:
http://jsfiddle.net/8doq0saf/5/
Das Gleiche unter 1.3-rc läuft ein anderes Ergebnis ergibt:
http://jsfiddle.net/1t52s9b2/4/
Ich konnte noch keine Dokumentation zu dieser Änderung finden. Was ist der Zweck des Syntaxschlüssels und wie ändere ich meinen Code, um das alte Verhalten wiederherzustellen?
angular.module('app', []).directive('number', function() {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
// valid number
ctrl.$parsers.push(function (value) {
var valid = angular.isUndefined(value) || value === '' || isFinite(value);
ctrl.$setValidity('number', valid);
return valid
? angular.isUndefined(value) || value === '' ? undefined : Number(value)
: undefined;
});
ctrl.$parsers.push(function (value) {
if (!angular.isDefined(attrs.minNumber)) {
return value;
}
var valid = angular.isUndefined(value) || Number(value) >= Number(attrs.minNumber);
ctrl.$setValidity('minNumber', valid);
return valid ? value : undefined;
});
ctrl.$parsers.push(function (value) {
if (!angular.isDefined(attrs.maxNumber)) {
return value;
}
var valid = angular.isUndefined(value) || Number(value) <= Number(attrs.maxNumber);
ctrl.$setValidity('maxNumber', valid);
return valid ? value : undefined;
});
}
};
});
Sie sollten tatsächlich die neue '$ validators' Pipeline für Dinge wie Ihr Beispiel verwenden. 'ctrl. $ validators.minNumber = function (val) {/ * ... * /}' – JJJ
Danke, ich hatte keine Ahnung von dieser neuen Funktion. –