了解指令定义的 transinclude 选项?

2024-04-03

我认为这是我用 angularjs 指令理解的最难的概念之一。

该文档来自http://docs.angularjs.org/guide/directive http://docs.angularjs.org/guide/directive says:

嵌入- 编译元素的内容并使其可用于指令。通常与 ngTransinclude 一起使用。嵌入的优点是链接函数接收预先绑定到正确范围的嵌入函数。在典型的设置中,小部件创建一个隔离范围,但嵌入不是隔离范围的子级,而是隔离范围的同级。这使得小部件可以具有私有状态,并且嵌入可以绑定到父(预隔离)范围。

  • true - 包含指令的内容。
  • 'element' - 嵌入整个元素,包括以较低优先级定义的任何指令。

It says transclude通常与ngTransclude。但是来自文档的样本ngTransinclude http://docs.angularjs.org/api/ng.directive:ngTransclude不使用ngTransclude根本没有指令。

我想要一些很好的例子来帮助我理解这一点。为什么我们需要它?它解决什么问题?如何使用它?


考虑一个名为我的指令在一个元素中,并且该元素包含一些其他内容,比方说:

<div my-directive>
    <button>some button</button>
    <a href="#">and a link</a>
</div>

If 我的指令正在使用模板,你会看到的内容<div my-directive>将被您的指令模板替换。所以有:

app.directive('myDirective', function(){
    return{
        template: '<div class="something"> This is my directive content</div>'
    }
});

将导致这样的渲染:

<div class="something"> This is my directive content</div> 

请注意,原始元素的内容<div my-directive> 会迷路(或者更好地说,被替换)。那么,跟这些朋友说再见吧:

<button>some button</button>
<a href="#">and a link</a>

那么,如果您想保留自己的<button>... and <a href>...在 DOM 中?你需要一种叫做嵌入的东西。这个概念非常简单:将一处的内容包含到另一处。所以现在你的指令看起来像这样:

app.directive('myDirective', function(){
    return{
        transclude: true,
        template: '<div class="something"> This is my directive content</div> <ng-transclude></ng-transclude>'
    }
});

这将呈现:

<div class="something"> This is my directive content
    <button>some button</button>
    <a href="#">and a link</a>
</div>. 

总之,当您在使用指令时想要保留元素的内容时,基本上可以使用 transinclude。

我的代码示例是here http://jsfiddle.net/7LRDS/1/。 您还可以从观看中受益this https://egghead.io/lessons/angularjs-transclusion-basics.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解指令定义的 transinclude 选项? 的相关文章

随机推荐

  • 在 iPhone 上管理 HTTP Cookie

    我想为 iPhone 移植一个使用 mechanize 的 python 应用程序 此应用程序需要登录网页并使用站点 cookie 转到该站点上的其他页面以获取一些数据 在我的 python 应用程序中 我使用 mechanize 进行自动
  • 为什么我可以在私有类型上使用 auto?

    我对以下代码的编译和运行感到惊讶 vc2012 gcc4 7 2 class Foo struct Bar int i public Bar Baz return Bar int main Foo f Foo Bar b f Baz err
  • 如何使用张量流服务使张量流集线器嵌入可服务?

    我正在尝试使用来自tensorflow hub的嵌入模块作为可服务 我是张量流新手 目前 我正在使用通用句子编码器 https tfhub dev google universal sentence encoder 1嵌入作为将句子转换为嵌
  • 单元测试模拟 - Node 17 + Typescript + ESM 模块

    有一个简单的问题我找不到答案 使用时 节点 17 打字稿 ESM package json 中的 类型 模块 我可以实现模拟吗仅用于一种功能 或模块 如果是这样 我可以举个例子吗 无论你使用什么框架 thanks 包 json test n
  • 如何暂时禁用 C/C++ 中的宏扩展?

    由于某种原因 我需要暂时禁用头文件和 undef MACRONAME将使代码编译 但它将在现有宏下进行 有没有办法禁用它 我应该提到 您并不真正知道宏的值 并且我正在寻找交叉编译器解决方案 至少应该在 GCC 和 MSVC 中工作 在 MS
  • PHP 中的缓存变量

    长话短说 我正在寻找快速有效地存储布尔变量的最佳方法 例如 当前用户是否浏览过此页面 布尔值 当前用户是否已为此页面投票 再次布尔 今天该用户有多少次通过投票获得积分 整数 这些变量将仅存储一天 即每天午夜它们将被删除 我可以想到五种方法来
  • SparkContext.getOrCreate() 用途

    目的是什么getOrCreate方法来自SparkContext班级 我不明白什么时候应该使用这个方法 如果我有 2 个 Spark 应用程序运行spark submit 在主要方法中 我用以下方法实例化 Spark 上下文SparkCon
  • 检查应用程序的互联网连接

    我需要检查用户是否已连接到互联网 然后才能继续 我使用 HttpClient 访问端点 如下所示 client http Client req http NewRequest GET url nil req SetBasicAuth use
  • Android 允许将多个文件上传(最大 150 MB)到 PHP 服务器

    我必须允许用户在从我的 Android 应用程序到 PHP 服务器的单个请求中上传多个文件 可以是图像 视频 音频 我正在使用 REST 网络服务 对于此功能 我使用以下代码 To upload the multiple documents
  • 没有为 Protobuf-net 中的 System.Management.Automation.PSObject 类型定义序列化程序

    这是我的课 ProtoContract internal class Powershellresults internal Powershellresults ProtoMember 1 public Collection
  • JAXB-@XmlMixed 用于读取@XmlValue 和@XmlElement

    我在这里看到了类似的问题 但它并没有帮助我解决问题 所以我在这里发布我的问题 看看是否有人可以修改我的代码以使其工作 问题 如何访问混合内容字符串值并将其保存在 setPhrase String value 方法中 标题 xml
  • 如何使用坐标数组获取最大/最小边界

    任何人都可以帮助我了解如何使用坐标数组获取最大 最小坐标的逻辑吗 我想要得到的是它可以从这些坐标数组中得到的最长距离 前任 var coordinates lat 231 lng 223l lat 43 lng 4323 lat 42312
  • NHibernate elt 字段

    有谁知道为什么 NHibernate 为多对多映射生成一个名为 elt 的 int 类型字段 我想知道为什么我需要它 谢谢 elt 字段是多对多映射中元素的外键 在连接表中 您应该看到两个外键列 id 对于父级 和 elt 对于元素 如果您
  • 如何对具有变化的值的数据帧进行一致的热编码?

    我正在获取数据帧形式的内容流 每个批次在列中具有不同的值 例如 一批可能如下所示 day1 data state MS OK VA NJ NM city C B G Z F age 27 19 63 40 93 另一个像 day2 data
  • 在设计选项卡中双击对象后删除 Netbeans 自动生成的代码

    所以我使用 Netbeans 和 设计 选项卡 放置标签 文本框等 很好 但是当您双击标签时 它会自动生成以下代码 private void jTextField1ActionPerformed java awt event ActionE
  • 是否可以在 Scala 中使用具有名称和命名参数值的 Map[String,Any] ?

    我正在为 REST Web 服务编写一个包装器 并且希望拥有强类型的 Scala API 以下是我到目前为止正在做的事情 def getMentions count Option Int None sinceID Option TweetI
  • Pandas 数据帧到 Excel 给出“文件不是 UTF-8 编码”

    我正在处理要导出到 Excel 文件中的列表 我发现很多人建议使用 pandas dataframe 所以我就是这么做的 我可以创建数据框 但当我尝试将其导出到 Excel 时 文件为空 只有以下消息 错误 file pathway 不是
  • 如何在 Mercurial 中重命名目录并继续跟踪所有文件更改

    我决定重命名我的 home hobby Python 包中的一些目录 doc to docs test to tests util to utils 因为 现在我想得更多了 我认为新名字更合适 我现在的总体想法是 如果容器以其内容命名 那么
  • Mysql:将列从时间戳转换为int并为每次更新执行转换

    我有一个现有的数据库列类型timestamp我需要修改才能成为INT 11 但为了实现这一点 我需要在更改每个时间戳值时对其进行转换 这是我目前无法正确转换时间戳的修改语句 ALTER TABLE my table MODIFY COLUM
  • 了解指令定义的 transinclude 选项?

    我认为这是我用 angularjs 指令理解的最难的概念之一 该文档来自http docs angularjs org guide directive http docs angularjs org guide directive says