将父范围值传递到Angular中的ng-repeat循环

Wan*_*tal 45 javascript angularjs angular-template

这应该是一个非常简单的问题,但我发现的所有变通方法都很复杂.我在模板中使用ng-repeat循环遍历一组对象,如下所示:

<div class="row-fluid" ng-repeat="message in messages.current|filter:'draft'"> 
    {{ message.subject }} ... {{ campaign.name }} ...
</div>
Run Code Online (Sandbox Code Playgroud)

由于ng-repeat创建了一个新范围,因此来自控制器的"campaign"对象似乎不可访问.是否有任何方法(除了将运动对象添加到我的数组中的每个项目)获得该值?

提前致谢.

Mat*_*erg 75

您可以使用$ parent访问父作用域

<div class="row-fluid" ng-repeat="message in messages.current|filter:'draft'"> 
    {{ message.subject }} ... {{ $parent.campaign.name }} ...
</div>
Run Code Online (Sandbox Code Playgroud)

  • 虽然这是真的,如果你这样做,你做错了.由于子范围原型继承自父范围,因此您不需要这样做.当代码增长时你会发现`$ parent.$ parent.$ parent.$ parent.help()` (21认同)
  • 虽然过度使用$ parent是你应该确保试图远离的,在某些情况下它会很有用.访问同样在ng-repeat中的父项的索引至少是我能想到的.<div data-ng-repeat ="父母中的父母"> <div data-ng-repeat ="儿童中的孩子"> {{$ parent.$ index}} {{$ index}} </ div> </ div > (4认同)
  • 当然有时候练习节拍理论=).我确信可以有更多相关的例子,但是当我看到一个反模式时,我觉得有责任的警告人,如果他们要使用它,他们应该知道还会发生什么. (4认同)