在本文档中:http://docs.angularjs.org/guide/directive,它表示指令有replace
配置:
模板 - 将当前元素替换为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
不起作用。我错过了什么吗?
答案 0 :(得分:167)
您对transclude: true
感到困惑,这会附加内部内容。
replace: true
表示指令模板的内容将替换声明指令的元素,在本例中为<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标签确实已被替换。
答案 1 :(得分:10)
正如文档所述,'replace'确定当前元素是否被指令替换。另一个选择是它是否只是作为一个孩子基本上添加。如果查看plnkr的源代码,请注意对于第二个指令,其中replace为false,div标记仍然存在。对于第一个指令,它不是。
第一个结果:
<span myd1="">directive template1</span>
第二个结果:
<div myd2=""><span>directive template2</span></div>
答案 2 :(得分:5)
替换[True |错(默认)]
效果
1. Replace the directive element.
相关性:
1. When replace: true, the template or templateUrl must be required.
答案 3 :(得分:0)
如果我在实际根元素中的模板顶级评论中得到了这个错误,我也会收到此错误。
<!-- Just a commented out stuff -->
<div>test of {{value}}</div>