好的,这是交易。
我为input
标记创建了一个自定义指令,并对input[type=ip]
进行了自定义验证:
.directive('input', function($q, $timeout) {
return {
restrict: "E",
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
if (attrs.type !== 'ip') return;
var reg = new RegExp("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
ctrl.$asyncValidators.ip = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
return $q.when();
}
var def = $q.defer();
if(reg.exec(modelValue)) {
def.resolve();
} else {
def.reject();
}
return def.promise;
};
}
};
});
这很有效,我打算在将来使用它来创建自定义验证。
我遇到的问题是input[type=file]
。在视图中,它没有ngModel
属性。 Angular不喜欢这个。它在技术上是input
标记,因此它解释了input
指令......但这需要ngModel
属性。
我该如何解决这个问题?如何根据input
属性创建自定义type
指令,这些指令不会相互破坏?
我能以某种方式制作require: 'ngModel'
选项吗?
答案 0 :(得分:0)
菲尔关于使用?ngModel
修复它的评论。一切正常。