一尘不染

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

angularjs

我正在尝试编写一个向指令添加验证属性的角度指令,但是它似乎没有用。这是我的演示。您将注意到,如果删除第二个输入框中的文本,则“有效”保持为true,但是如果删除第一个输入框中的文本,则为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);
        }
    };
});

我猜我只是缺少一些简单的东西。


阅读 198

收藏
2020-07-04

共1个答案

一尘不染

在表单的编译阶段将读取所有验证表单的规则,因此在子节点中进行更改后,您需要重新编译form指令(form这是AngularJS中的自定义指令)。但是只能执行一次,避免无限循环(在编译窗体后,将再次调用您指令的’link’函数)。

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

2020-07-04