12

タグに検証属性を追加する角度ディレクティブを作成しようとしていますが、機能していないようです。これが私のデモです。2 番目の入力ボックスのテキストを削除しても「Is Valid」は 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);
        }
    };
});

シンプルなものが欠けているだけだと思います。

4

3 に答える 3

20

フォームの検証に関するすべてのルールは、フォームのコンパイル フェーズで読み取られるため、子ノードに変更を加えた後、formディレクティブを再コンパイルする必要があります (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

于 2013-09-21T01:18:01.067 に答える
1

私はこれがかなり古い質問であることを知っていますが、それが価値があることについてng-requiredは、ブール値を取る角度ドキュメントが説明されています。これにより、私が抱えていた同様の問題が解決されました。

http://docs.angularjs.org/api/ng/directive/input

于 2014-02-28T12:52:13.347 に答える