具有 ng-repeat 的 AngularJS 隔离指令打破了嵌入范围

标签 angularjs angularjs-directive angularjs-scope ng-repeat transclusion

我真的很感激我在开发一个嵌入的隔离指令时遇到的这个范围界定问题的一些理解,其中嵌入在模板内重复。

我保证我已经了解隔离和包含范围的工作原理,并且我已经在网上搜索了答案。 :)

我在这里发现的是,当不使用重复时,我的嵌入 html 可以访问父范围(正如我所料,因为嵌入范围是父范围的兄弟)。

但是,当我更改模板以重复嵌入时,被嵌入的 html 不再可以访问父范围。

我敢肯定这是有充分理由的,但对于我的一生,我不能指望它。

请参阅 example plunker here - 它会比文字更好地解释我所指的内容。

最佳答案

ng-repeat 发生的情况是嵌入范围(下面的 00A)成为 ng-repeat 范围(009)的子级,而不是 Controller 范围(003)的子级。

(右键单击图像并在新选项卡中打开它以更好地查看它。)

enter image description here

由于从隔离范围 006 到 Controller 范围 003 之间没有虚线,因此已嵌入的范围 00A 找不到 outer使用原型(prototype)继承链接/查找。

(作用域 004 和 005 由 working 指令创建。转置作用域 005 可以使用原型(prototype)继承找到 outer。)

关于具有 ng-repeat 的 AngularJS 隔离指令打破了嵌入范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730573/

相关文章:

javascript - angularjs ns-显示逻辑流程

javascript - ngView 中指令使用的远程数据存储在哪里? (AngularJS)

angularjs - 如果子作用域的父作用域被销毁,子作用域会发生什么

angularjs - Angular - 从 Controller 中的对象获取数据到 ng-Model

angularjs - Facebook的$ authWithOAuthRedirect后,Firebase $ onAuth的authData错误

javascript - 在基于 Angularjs 的页面困境中识别元素/页面

html - 在禁用的输入上启用文本选择

javascript - 这个简单的指令没有显示

javascript - 在 ng-model 中具有单向绑定(bind)的两个输入

html - $scope 在 AngularJS 函数中不起作用