3

最初に角度ディレクティブをコンパイルして属性を追加し、次にコードを他のディレクティブとして再度コンパイルしたいと考えています。とにかく、これをコンパイルするために compile: pre post または何かを使用する可能性がありますか

親ディレクティブ テンプレートのディレクティブに属性を追加しますか?

4

1 に答える 1

6

ディレクティブ<foo></foo>( restrict: 'E') があるとします。属性を動的に追加する (~ テンプレートではなく元の DOM を変更する) 場合、これは$compileディレクティブのステップで行う必要があります。属性を追加した後、トリガーできる新しいディレクティブがあるかどうかを angularjs に認識させるには、新しい要素をコンパイルする必要があります。たとえば、それが ng-include の機能です。要素を DOM に含めてコンパイルし、新しいディレクティブを使用できるようにします。

ディレクティブfoo:

compile: function ($tElement, $tAttrs) {
  var el = $tElement[0];
  el.setAttribute('bar', 'newFancyValue');
  return function (scope, element, attrs) {
     // you can even append html elements here, for example the template
     element.append("<book></book>");
     $compile(element)(scope);
  };
}

およびディレクティブbar( with restrict: 'A') には、必要なコードを含めることができます。

これはあなたが読みたいと思うかもしれない関連する質問です特定のタイプの一般的なディレクティブ(UIコンポーネントの継承)

ドキュメントのトランスクルード関数を見て、 in の以前の内部要素を追加する方法を確認してfooくださいbook

于 2013-05-24T07:32:18.420 に答える