如何从两次或三次嵌套的ng-repeat范围访问控制器的范围?

时间:2015-08-24 03:19:55

标签: javascript angularjs angularjs-scope

我并不认为我能够比标题中已有的更多地阐明,这是一个相当自我描述的问题。

说我有这种结构:

<div ng-repeat="type in types">
  <div ng-repeat="subtype in type.subtypes">
    <div ng-repeat="item in subtype.items">
        <span>How to access Controller scope here?</span>
    </div>
  </div>
</div>

在范围内,如何访问控制器上的原始范围?

在Knockout中,您可以执行$parents[i],其中i是您想要重新加入的范围。我还没有看到过使用Angular可以提及的内容。

我真的需要致电$parent.$parent.$parent吗?

1 个答案:

答案 0 :(得分:2)

  

我真的需要致电$parent.$parent.$parent吗?

没有

<div ng-repeat="type in types">
  <div ng-repeat="subtype in type.subtypes">
    <div ng-repeat="item in subtype.items">
        {{type}} {{subtype}} {{item}}
    </div>
  </div>
</div>

它们都继承自顶级范围。

如果您担心名称空间冲突,请检查controllerAs语法:

<div ng-controller="ParentCtrl as parent">
    {{parent.property}}
  <div ng-controller="ChildCtrl as child">
    {{parent.property}}
    {{child.property}}
  </div>
</div>
  

如果您在不同范围内存在冲突属性,会发生什么?哪个被选中?

最低级别的人。