如何使用指令定义的replace?
在这个文档中: http : //docs.angularjs.org/guide/directive ,它说有一个指令的replace
configuration:
模板 – 将当前元素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>