繁体   English   中英

为标签和属性组合创建自定义的角度指令?

[英]Creating a custom angular directive for tag and attribute combination?

好的,这是交易。

我为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属性。

我怎样才能解决这个问题? 如何基于不会相互破坏的type属性创建自定义input指令?

我可以提出require: 'ngModel'以某种方式进行选择吗?

菲尔(Phil)使用?ngModel的评论修正了它。 一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM