作用域,ng-repeat和指令

3

我对Angular比较陌生,正在尝试理解作用域。我知道通过ng-repeat循环遍历集合时,每次都会得到自己的作用域。但是我不明白以下代码:

<tr data-ng-repeat="oneField in $parent.formEventDefinition">
  <ng-include src="getUrl(oneField.fieldType)"></ng-include>
  {{oneField.fieldType}}

在 ng-include 中,oneField.fieldType 是 undefined,但是在下一行的 {{}} 指令中,它能正确地将值写入页面。 为什么它可以在一个情况下从作用域中找到正确的值,而在另一个情况下却不能呢?
无论是提供答案还是指向自己寻找答案的地方都可以。我正在尝试学习并迷失了。
谢谢!

你能在Fiddle上重现吗?这应该没问题,在这里也可以工作:http://jsfiddle.net/seyenaz/HB7LU/13156/ - Omri Aharon
2个回答

1
因为 ng-includeng-repeatng-ifng-switch-when 一样会从当前运行的作用域中创建一个子作用域,所以应该在那里使用 $parent.oneField.fieldType。请参考此答案获取更多信息。

1
ng-include{{}}表达式处于同一作用域(即ng-repeat迭代的作用域),它们都应该正常工作。 - Omri Aharon

0
原来这不是作用域的问题。事实证明,问题在于在<tr>元素内嵌套<ng-include>元素是不合法的,而Angular以某种方式强制执行此规定。当我重新编写HTML将<ng-include>放在<td>内时,一切都神奇地开始工作了。
感谢您的帮助。
戴夫

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接