如果指令具有独立的作用域,为什么 ng-transinclude 的作用域不是其指令作用域的子级?

2024-01-12

给定一个指令(container1)具有嵌入和隔离作用域,当链接指令时,我有这些作用域:

Scope 004           <-- scope of the body
    Scope 005       <-- scope of directive container1
    Scope 006       <-- scope of the ng-transclude

我期望:

Scope 004            <-- scope of the body
    Scope 005        <-- scope of the directive
         Scope 006   <-- scope of the ng-transclude

如果同一个指令有一个共享范围而不是隔离范围,我得到了预期的结果。

这给我带来了一个问题,因为如果嵌入的内容包含另一个指令(component1)在一个孤立的范围内,我得到:

Scope 004             <-- scope of the body
    Scope 005         <-- scope of the directive
    Scope 006         <-- scope of the ng-transclude
          Scope 007   <-- scope of directive component1

我想使用这样的指令:

<container1>
   <component1 data="objectExposedInContainer1"/>
</container1>

但这不起作用,在里面component1, $scope.data is undefined因为objectExposedInContainer1不在正确的范围内。

我有两个问题:

  • Why ng-transclude如果指令具有隔离范围,则其范围不是其指令范围的子级?这是一个错误吗?
  • 如果这不是一个错误,那么容器指令如何将数据传递到它的内容,如果不是像我尝试的那样设置属性。

这是一个不起作用的示例:http://plnkr.co/edit/NDmJiRzTF9e5gw8Buht2?p=preview http://plnkr.co/edit/NDmJiRzTF9e5gw8Buht2?p=preview。由于 Plunker 是使用 Anguar 构建的,因此很难使用 Batarang 进行调试。我建议在本地下载代码。注释掉line 10 of app.js使其使用共享范围工作。


如果指令具有隔离作用域,为什么 ng-transinclude 的作用域不是其指令作用域的子级?

ng-transclude旨在允许指令处理任意内容,而隔离范围旨在允许指令封装其数据。

If ng-transclude没有保留这样的范围,您要嵌入的任何任意内容都需要知道指令的实现细节(即,它需要知道您创建的隔离范围上可用的内容)。

如果这不是一个错误,那么容器指令如何将数据传递到它的内容,如果不是像我尝试的那样设置属性。

如果容器指令和包含的指令是耦合的 - 即您编写了它们并且需要它们一起运行 - 那么它们应该通过共享控制器进行通信。

如果容器指令应该将内容注入到子级作用域中(例如 ng-repeat),那么您不应该使用隔离作用域。


角度文档对于行为应该是什么非常清楚:

“在典型的设置中,小部件会创建一个隔离范围,但是 嵌入不是隔离范围的子级,而是隔离范围的同级。这 使小部件可以拥有私有状态,并且 嵌入要绑定到父(预隔离)范围。”

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

如果指令具有独立的作用域,为什么 ng-transinclude 的作用域不是其指令作用域的子级? 的相关文章

随机推荐

  • 仅使用下划线检查是否存在重复的数组对

    我想知道如何检查数组中的重复值对是否作为 javascript 中较大数组的一部分存在 你可以看到有一对重复的 1 2 所以函数应该返回true i e var arr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1
  • 如何让两个物体碰撞后粘在一起?

    我真的很困惑 我可以成功检测到碰撞 但我无法使参与碰撞的两个物体粘在一起 这是我的联系监听器 world setContactListener listener listener new ContactListener Override p
  • 获取 Android 通知以横幅形式显示

    我相当广泛地研究了各种术语 横幅 弹出 通知类型 但我似乎无法清楚地了解我 认为 的一个非常常见的问题 因此 如果由于缺乏术语而导致我错过了一个非常明显的解决方案 请提出建议 问题是这样的 我希望 Android 通知显示为从屏幕顶部掉落的
  • 如何自动填充 SQLAlchemy 数据库字段? (Flask-SQLAlchemy)

    我有一个简单的用户模型 定义如下 models py from datetime import datetime from myapp import db class User db Model id db Column db Intege
  • 在 Cakephp 中使用 $this->Auth 获取关联模型

    我正在使用 CakePHP 2 0 的集成 Auth 组件 我有以下表格 Users Groups Profiles 我的模型关系如下 User belongsTo Group User hasMany Profiles 登录该站点时 我注
  • 删除级联时是否有“反向”选项?

    假设我在 SQL Server 中有以下数据库 CREATE TABLE Order ID BIGINT IDENTITY 1 1 CONSTRAINT PK Order PRIMARY KEY CLUSTERED ID CREATE TA
  • 回收时注销

    在生产环境中 我有一个 IIS 托管的 ASP NET 应用程序 实际上是许多 Web 应用程序 每个应用程序都会消耗大量内存 但目前限制它的唯一方法是回收 nHibernate 似乎正在泄漏内存 并且它正在创建大量字符串集合 问题是 在回
  • 在 hashmap android 中添加 Arraylist> 中的值

    我必须获取数据列表 所以我使用了字符串的数组列表和列表 这里如何在地图上添加值 我使用了下面的代码 static final String KEY TITLE Category static final String KEY ARTICLE
  • 对 Angular2 中的对象数组进行排序

    我在 Angular2 中对对象数组进行排序时遇到问题 该对象看起来像 name t10 ts 1476778297100 value 32 339264 xid DP 049908 name t17 ts 1476778341100 va
  • ZF2 - 需要在特定条件失败时显示特定错误消息

    我正在使用 ZF2 表单验证 我必须验证两个字段 用户名 和 密码 一切正常 但我收到类似的消息 Please enter username Username can not be less than 3 characters Please
  • 在 Eclipse 启动时禁用插件

    我刚刚为 Eclipse 安装了一个插件 但结果 Eclipse 将不再启动 它说 有一个错误 或一些此类无信息的消息 如何在不加载插件的情况下启动 Eclipse 以便我可以实际卸载有问题的软件 正如另一个人提到的 您可以尝试 clean
  • 处理 R 中冲突的命名空间(不同包中的相同函数名称):重置包命名空间的优先级

    不同包的命名空间之间的名称冲突R可能是危险的 并且使用package function不幸的是没有普遍化R 是否有一个函数可以重置包命名空间相对于当前加载的所有其他命名空间的优先级 我们当然可以detach然后重新加载包 但是没有其他更实用
  • 如何使用 Google App Engine 重定向所有 URL

    我该如何配置app yaml文件将所有 URL 重定向到另一个 URL 例如我想要http example appspot com hello or http example appspot com hello28928723重定向到htt
  • 有 CSS 父选择器吗?

    我该如何选择 li 是锚元素的直接父元素吗 举个例子 我的 CSS 应该是这样的 li lt a active property value 显然 有多种方法可以使用 JavaScript 实现此目的 但我希望 CSS Level 2 本身
  • 使用 terraform 获取金库秘密值

    我正在使用带有 consul 的保管库服务器作为存储后端 并尝试使用 terraform 中的保管库提供程序获取密码值 但它并没有获得它的价值 我将我的秘密存储在位置秘密 实例中 main tf provider vault address
  • 如何加速 Mongodump,转储未完成

    在尝试使用来自大约 50 亿个数据库的查询来运行数据库转储时 进度条时间似乎表明此转储不会在任何合理的时间 100 多天 内完成 大约 22 小时后 查询似乎以 0 结束后也冻结了 之后的行是metadata json 行 转储行是 mon
  • 复制同名属性的简单代码?

    我有一个old这个问题在我脑海里停留了很长时间 当我在 Spring 中编写代码时 有很多 DTO 域对象的脏代码和无用代码 对于语言级别 我对 Java 毫无希望 但在 Kotlin 中看到了一些曙光 这是我的问题 Style 1我们通常
  • 在 pyqt4 中旋转像素图会产生不需要的翻译

    我正在尝试编写一个简单的应用程序 在按下按钮时旋转 png 图像 我一切正常 只是当图像旋转时 它偏离了东南方向的中心 我本以为它不是绕着中心旋转 但每旋转 45 度它就会回到原点 这很奇怪 对于一个关键事件 我只是简单地调用 pixmap
  • 堆叠 LSTM 网络中每个 LSTM 层的输入是什么?

    我在理解堆叠 LSTM 网络中各层的输入输出流时遇到一些困难 假设我创建了一个如下所示的堆叠 LSTM 网络 parameters time steps 10 features 2 input shape time steps featur
  • 如果指令具有独立的作用域,为什么 ng-transinclude 的作用域不是其指令作用域的子级?

    给定一个指令 container1 具有嵌入和隔离作用域 当链接指令时 我有这些作用域 Scope 004 lt scope of the body Scope 005 lt scope of directive container1 Sc