首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用指令定义的`replace`?

如何使用指令定义的`replace`?
EN

Stack Overflow用户
提问于 2013-03-08 10:23:06
回答 4查看 123.4K关注 0票数 84

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

template -用HTML的内容替换当前元素。替换过程将所有属性/类从旧元素迁移到新元素。有关更多信息,请参阅下面的创建组件部分。

javascript代码

代码语言: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代码

代码语言:javascript
复制
<div myd1>
  original content should be replaced
</div>
<div myd2>
  original content should NOT be replaced
</div>

但最终的页面如下所示:

代码语言:javascript
复制
directive template1
directive template2

看起来replace不工作了。我错过什么了吗?

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-08 11:49:41

您与transclude: true混淆了,它会附加内部内容。

replace: true意味着指令模板的内容将替换声明该指令的元素,在本例中为<div myd1>标记。

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

例如,没有 replace:true

代码语言:javascript
复制
<div myd1><span class="replaced" myd1="">directive template1</span></div>

和带有 replace:true

代码语言:javascript
复制
<span class="replaced" myd1="">directive template1</span>

正如您在后一个示例中看到的,div标记确实被替换了。

票数 179
EN

Stack Overflow用户

发布于 2013-03-08 11:51:28

正如文档所述,'replace‘确定当前元素是否被指令替换。另一个选择是,它是否基本上是作为一个孩子添加到的。如果您查看plnkr的源代码,请注意,对于第二个指令,其中replace为false,div标记仍然在那里。对于第一个指令,它不是。

第一个结果:

代码语言:javascript
复制
<span myd1="">directive template1</span>

第二个结果:

代码语言:javascript
复制
<div myd2=""><span>directive template2</span></div>
票数 12
EN

Stack Overflow用户

发布于 2014-06-06 14:42:43

替换True | False (默认)

效应

代码语言:javascript
复制
1.  Replace the directive element. 

依赖关系:

代码语言:javascript
复制
1. When replace: true, the template or templateUrl must be required. 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15285635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档