ホームページ > 記事 > ウェブフロントエンド > AngularJS でディレクティブを追加するときに無限ループを回避するにはどうすればよいですか?
AngularJS では、ディレクティブ内から要素に追加のディレクティブを追加しようとすると、無限ループの問題が発生する可能性があります。これは、ディレクティブ変更後の AngularJS の自動再コンパイル プロセスが原因で発生します。
この問題に対処するには、$compile サービスと要素操作を利用して、無限ループを引き起こすことなく必要なディレクティブを追加できます。この問題を解決するコードの修正バージョンは次のとおりです。
angular.module('app') .directive('superDirective', function ($compile, $injector) { return { restrict: 'A', replace: true, link: function compile(scope, element, attrs) { if (!element.attr('datepicker')) { // Check for existing attributes element.attr('datepicker', 'someValue'); element.attr('datepicker-language', 'en'); element.removeAttr("ng-required"); // Remove any ng-required attribute $compile(element)(scope); // Compile the updated element } } }; });
このアプローチでは、ディレクティブを追加する前に既存のディレクティブをチェックすることで無限ループを回避します。さらに、既存の ng-required 属性を削除して、ディレクティブの複数のインスタンスが設定できないようにします。この戦略を使用すると、親ディレクティブ内から要素にディレクティブを安全に追加できます。
単一の要素 (
以上がAngularJS でディレクティブを追加するときに無限ループを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。