我有一个可重复使用的指令,其中自定义验证器的使用是可选的。
有条件地应用此验证器属性的好方法是什么?
<input type="text"
name="{{name}}"
require-items="{{requireitems}}"
mongoose-error>
require-items
是我想要传递给我的指令的可选验证。
该指令将被调用如下:
//with validator enabled
<my-directive requireitems="{{items.length}}"></my-directive>
//no validator
<my-directive></my-directive>
答案 0 :(得分:1)
在my-directive
指令link
功能中:
link: function(scope, iElement, iAttrs, controller) {
if(iAttrs.requireItems) {
// checks if require-items is present
// process your validation here
}
}
答案 1 :(得分:0)
检查在ng-required
中如何完成,使用属性并观察它们以便处理动态更改。
var requiredDirective = function() {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, elm, attr, ctrl) {
if (!ctrl) return;
attr.required = true; // force truthy in case we are on non input element
ctrl.$validators.required = function(modelValue, viewValue) {
return !attr.required || !ctrl.$isEmpty(viewValue);
};
attr.$observe('required', function() {
ctrl.$validate();
});
}
};
};