Какая точная разница между ngModelCtrl.$parsers.unshift
и ngModelCtrl.$parsers.push
в пользовательской директиве.
Я хочу заставить angular проверять форму, когда что-то происходит, что влияет на model
, но не на form
сам.Я пытался установить Form.$setSubmitted
, но я знаю, что это не так.после нескольких поисков я обнаружил, что в моей пользовательской директиве валидации нужно использовать что-то вроде ngModelCtrl.$parsers.unshift
.
моя директива обязана проверять длину массива, привязанного к ng-model
:
return {
restrict: 'A',
require: 'ngModel',
link: function ($scope, elem, attrs, ngModelCtrl) {
ngModelCtrl.$parsers.push(function (viewValue) {
// doesn't enter this function at all!
console.log(viewValue);
});
ngModelCtrl.$validators.requiredCount = function (modelValue, viewValue) {
// executed at the first time only at initialize
return modelValue.length == attrs.requiredCount;
};
}
};
и как я его использую:
<list orientation="vertical" type="PropertyValue" ng-model="Entity.PropertyValues"
dont-save
ng-required="PropertyTypeIdObject.Code === 'FixedValues'"
required-count="1"></list>
list
сама по себе является директивой, отвечающей за обработку массива, связанного с ng-model
.