このドキュメント: http://docs.angularjs.org/guide/directive では、ディレクティブのreplace
設定があると述べています。
template-現在の要素をHTMLのコンテンツに置き換えます。置換プロセスは、すべての属性/クラスを古い要素から新しい要素に移行します。詳細については、以下のコンポーネントの作成セクションをご覧ください。
javascriptコード
app.directive('myd1', function(){
return {
template: '<span>directive template1</span>',
replace: true
}
});
app.directive('myd2', function(){
return {
template: '<span>directive template2</span>',
replace: false
}
});
htmlコード
<div myd1>
original content should be replaced
</div>
<div myd2>
original content should NOT be replaced
</div>
しかし、最終ページは次のようになります。
directive template1
directive template2
replace
は機能しないようです。私は何かを見逃していますか?
transclude: true
と混同され、内部コンテンツが追加されます。
replace: true
は、ディレクティブテンプレートのコンテンツが、ディレクティブが宣言されている要素(この場合は<div myd1>
タグ)を置き換えることを意味します。
http://plnkr.co/edit/k9qSx15fhSZRMwgAIMP4?p=preview
たとえば、withoutreplace:true
<div myd1><span class="replaced" myd1="">directive template1</span></div>
およびwithreplace:true
<span class="replaced" myd1="">directive template1</span>
後者の例でわかるように、divタグは実際にはreplacedです。
ドキュメントが述べているように、 'replace'は現在の要素がディレクティブによって置き換えられるかどうかを決定します。もう1つのオプションは、基本的に子として追加するかどうかです。 plnkrのソースを見ると、replaceがfalseである2番目のディレクティブについては、divタグがまだ存在していることに注意してください。最初の指令ではそうではありません。
最初の結果:
<span myd1="">directive template1</span>
2番目の結果:
<div myd2=""><span>directive template2</span></div>
置換[True | False(デフォルト)]
効果
1. Replace the directive element.
依存:
1. When replace: true, the template or templateUrl must be required.
また、実際のルート要素の中でテンプレートのトップレベルにコメントがある場合、このエラーが発生しました。
<!-- Just a commented out stuff -->
<div>test of {{value}}</div>