有什么办法可以在AngularJS中进行条件验证?我要解决的问题基本上是一个单选按钮列表,这些单选按钮基于选择启用/禁用输入。下图描述了该问题。第一个文本输入仅接受字母,第二个文本仅接受数字。都有ng-pattern
和ng-required
设置。(有关Plunker的工作示例)
我想要实现的是所选择的单选按钮时,验证用于关闭相应的输入字段。
我曾希望将其设置ng-disabled
为true可以防止为所讨论的表单控件设置无效状态,但是事实并非如此。
到目前为止,我找到的唯一解决方案是在选择另一个选项并将设置ng-required
为false时清除输入。是否有任何明智的方法来实现这一目标,或者是将元素完全从DOM中删除的唯一解决方案?
试试这个指令:
.directive('disableChildren', function() {
return {
require: '^form',
restrict: 'A',
link: function(scope, element, attrs,form) {
var control;
scope.$watch(function() {
return scope.$eval(attrs.disableChildren);
}, function(value) {
if (!control) {
control = form[element.find("input").attr("name")];
}
if (value === false) {
form.$addControl(control);
angular.forEach(control.$error, function(validity, validationToken) {
form.$setValidity(validationToken, !validity, control);
});
} else {
form.$removeControl(control);
}
});
}
}
})
有关更多信息以及其工作原理的说明。查看我类似的指令,从验证中排除隐藏的元素:
实现指令以从验证中排除隐藏的输入元素($ addControl问题)
我认为我们可以以某种方式组合这些指令以创建通用指令,该通用指令可根据我们对表达式的求值方式在任何地方使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句