范围,ng-repeat和指令

时间:2015-04-23 16:30:35

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

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,但下一行的{{}}指令将正确的值写入页面。为什么在一种情况下从范围中找到正确的值而不是另一种情况呢?

答案或指向某个地方的指针可以自己找到答案。我正在努力学习并迷失方向。

谢谢!

2 个答案:

答案 0 :(得分:1)

因为ng-include确实从当前运行范围创建子范围,如ng-repeatng-ifng-switch-when,所以使用$parent.oneField.fieldType

Look this answer了解更多信息

答案 1 :(得分:0)

事实证明,这不是范围问题。事实证明,问题是将<ng-include>元素嵌套在<tr>元素中是不合法的,而Angular以某种方式强制执行此操作。当我重新设计HTML以将<ng-include>放入<td>时,所有内容都开始神奇地工作。

感谢您的帮助。

戴夫