我已经为输入构建了一些自定义指令。如果输入的值无效,我想使用它们并显示错误消息。因此,每个ng消息都以"form.input.$dirty"为条件显示。
如果我点击使用我的自定义指令的输入,它会变得很脏。但我认为不应该这样。使用required或/和max的输入不显示消息,也不脏。所以我认为错误是在我的指令。
一个自定义指令:
{
restrict: 'A',
require: 'ngModel',
scope: {
ngModel: '=',
countryCode: '<'
},
link: function (scope, element, attrs, ctrl) {
middlewareConfigService.getCountries().then(function (response) {
scope.countries = response.data;
ctrl.$validate()
})
var isValidBic = function isValidBic(value) {
if (!value)
return true;
value = value.toUpperCase();
if (!(value.length === 8 || value.length === 11)) {
return false;
}
if (scope.countryCode) {
return value.substring(4, 6) === scope.countryCode
}
if (scope.countries) {
return scope.countries.filter(function (country) {
return country.key === value.substring(4, 6)
}).length > 0;
}
return true;
};
ctrl.$validators.ngBic = function (modelValue) {
return isValidBic(modelValue);
};
}
}
缺少什么吗?是指令的问题吗?
提前感谢
查看官方文档:
ngModel指令
ng-dirty:控件已与
交互
ngModelController
$dirty如果用户已经与控件交互,则返回True。
因此,这不是你的指令的错误,而是你对"脏"的概念的轻微误解。