如何使用指令定义的replace?

在这个文档中: http : //docs.angularjs.org/guide/directive ,它说有一个指令的replaceconfiguration:

模板 – 将当前元素replace为HTML的内容。 replace过程将所有属性/类从旧元素迁移到新元素。 有关更多信息,请参阅下面的创build组件部分。

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不起作用。 我错过了什么?

现场演示: http : //plnkr.co/edit/rGIgmjO81X2UxJohL4HM?p=preview

你对transclude: true是困惑的,它会附加内在的内容。

replace: true表示指令模板的内容将replace指令所在的元素,在本例中是<div myd1>标记。

http://plnkr.co/edit/k9qSx15fhSZRMwgAIMP4?p=preview

例如没有 replace:true

 <div myd1><span class="replaced" myd1="">directive template1</span></div> 

replace:true

 <span class="replaced" myd1="">directive template1</span> 

正如你在后面的例子中看到的那样,div标签确实被replace了

正如文档所述,“replace”决定当前元素是否被指令取代。 另一种select是基本上是否将其作为小孩join。 如果你看看你的plnkr的源码,请注意,对于第二个指令,其中replace是错误的,div标签仍然存在。 对于第一个指令,它不是。

第一个结果:

 <span myd1="">directive template1</span> 

第二个结果:

 <div myd2=""><span>directive template2</span></div> 

replace[True | 假(默认)]

影响

 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>