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

时间:2013-05-24 08:22:18

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

我真的很感激我在开发一个transcluded isolated指令时遇到的这个范围问题的理解,其中在模板内部重复了转换。

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

我在这里发现的是,当不使用重复时,我的被转换的html可以访问父作用域(正如我预期的那样,因为被转换的作用域是父作用域的兄弟)。

但是,当我更改模板以重复转换时,转换后的html将无法再访问父作用域。

我确信这是有充分理由的,但对于我的生活,我不能把手指放在上面。

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

1 个答案:

答案 0 :(得分:8)

ng-repeat会发生的情况是,被转换的范围(下面的00A)成为ng-repeat范围(009)的子节点,而不是控制器范围的子节点(003)。

(右键单击图像并在新标签中将其打开,以便更好地查看。)

enter image description here

由于隔离范围006到控制器范围003没有虚线,因此转换范围00A无法使用原型继承链接/查找找到outer

(范围004和005由working指令创建.Transcluded范围005可以使用原型继承查找outer。)