我正在尝试编写一个向指令添加验证属性的角度指令,但是它似乎没有用。这是我的演示。您将注意到,如果删除第二个输入框中的文本,则“有效”保持为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); } }; });
我猜我只是缺少一些简单的东西。
在表单的编译阶段将读取所有验证表单的规则,因此在子节点中进行更改后,您需要重新编译form指令(form这是AngularJS中的自定义指令)。但是只能执行一次,避免无限循环(在编译窗体后,将再次调用您指令的’link’函数)。
form
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