【问题标题】:Scopes, ng-repeat, and directives范围、ng-repeat 和指令
【发布时间】:2015-07-01 23:45:53
【问题描述】:

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

答案或指向我自己找到答案的地方的指针都很好。我正在努力学习,但我迷路了。

谢谢!

【问题讨论】:

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


【解决方案1】:

因为ng-include 确实从当前运行的范围创建了一个子范围,就像ng-repeatng-ifng-switch-when 一样,所以使用应该在那里使用$parent.oneField.fieldType

Look this answer了解更多信息

【讨论】:

  • ng-include{{}} 表达式在同一范围内(ng-repeat 的迭代范围),它们应该都可以。
【解决方案2】:

事实证明,这不是范围问题。事实证明,问题在于将&lt;ng-include&gt; 元素嵌套在&lt;tr&gt; 元素中是不合法的,Angular 以某种方式强制执行此操作。当我重新编写 HTML 以将 &lt;ng-include&gt; 放入 &lt;td&gt; 中时,一切都开始神奇地工作了。

感谢您的帮助。

戴夫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2015-03-17
    • 2013-03-15
    • 2014-12-26
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多