ディレクティブに関するAngularJSドキュメントから:
transclude
-要素のコンテンツをコンパイルし、ディレクティブで利用できるようにします。通常、ngTranscludeと共に使用されます。トランスクルージョンの利点は、リンク機能が正しいスコープに事前バインドされたトランスクルージョン機能を受け取ることです。通常の設定では、ウィジェットは分離スコープを作成しますが、トランスクルージョンは子ではなく分離スコープの兄弟です。これにより、ウィジェットがプライベート状態を持ち、トランスクルージョンが親(事前分離)スコープにバインドされるようになります。
true
-指令の内容を非表示にします。
'element'
-低い優先度で定義されたディレクティブを含む要素全体をトランスクルードします。
transclude:true
したがって、次のようにmy-transclude-true
宣言されたディレクティブが宣言されてtransclude: true
いるとします。
<div>
<my-transclude-true>
<span>{{ something }}</span>
{{ otherThing }}
</my-transclude-true>
</div>
コンパイル後、リンクする前は次のようになります。
<div>
<my-transclude-true>
<!-- transcluded -->
</my-transclude-true>
</div>
のコンテンツ(子)my-transclude-true
は<span>{{ something }}</span> {{...
、トランクルードされ、ディレクティブで使用できます。
transclude: '要素'
次のようにmy-transclude-element
宣言されたディレクティブが宣言されている場合transclude: 'element'
:
<div>
<my-transclude-element>
<span>{{ something }}</span>
{{ otherThing }}
</my-transclude-element>
</div>
コンパイル後、リンクする前は次のようになります。
<div>
<!-- transcluded -->
</div>
ここでは、子を含む要素全体が隠蔽され、ディレクティブで使用できるようになります。
リンクするとどうなりますか?
これは、transclude関数で必要なことを行うためのディレクティブ次第です。スコープが変更されたときに要素全体とその子を繰り返すことができるようにngRepeat
使用しtransclude: 'element'
ます。ただし、タグを置き換えるだけで、その内容を保持したい場合transclude: true
は、ngTransclude
これを行うディレクティブを使用できます。
made available to the directive
声明を逃した。要素は常にディレクティブで使用できます。これについて詳しく説明してもらえますか?