表单 – 如何在angularjs指令中添加验证属性

我正在尝试编写一个角度指令,它将验证属性添加到标签中,但它似乎不起作用.这是我的演示您将注意到,如果删除第二个输入框中的文本,则“有效”仍然为真,但如果删除第一个输入框中的文本,则为“false”.

http://plnkr.co/edit/Rr81dGOd2Zvio1cLYW8D?p=preview

这是我的指令:

angular.module('demo', [])
.directive('metaValidate', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            element.attr("required", true);
        }
    };
});

我猜我只是想念一些简单的东西.

表单验证的所有规则都将在表单的编译阶段读取,因此,在对子节点进行更改后,需要重新编译form指令(形式为AngularJS中的自定义指令).但只做一次,避免无限循环(您的指令的“链接”函数将在表单的编译后再次调用).

angular.module('demo', [])
.directive('metaValidate', function ($compile) {
    return {
        restrict: 'A',
        link: function (scope,element, attrs) {
          if (!element.attr('required')){
            element.attr("required", true);
            $compile(element[0].form)(scope);
          }
        }
    };
});

工作空档:http://plnkr.co/edit/AB6extu46W4gFIHk0hIl?p=preview

相关文章
相关标签/搜索