AngularJS:ngTransclude和访问ngRepeat的范围

时间:2014-10-15 18:21:09

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-transclude

我们正在将应用程序升级到Angular 1.3.0。在这样做的过程中,我们遇到了一些问题,其中大部分问题似乎归结为ngRepeat中ngTransclude的行为。

我们有一个指令重复一堆项目,周围有一个容器,但不拥有该容器的子容器。例如,这是一个简化的例子:

<div ng-controller="myController">
    There are {{items.length}} items.
    <div my-directive items="items">
        This item's name is {{item.name}}
    </div>
</div>

在内部,该指令包含<li ng-repeat="item in items" ng-transclude></li>等。

在更新之前,这很好用。重复的,被转换的元素位于继承自ngRepeat创建的范围的范围内。在更新时,这些项目都在一个继承自控制器的范围内,据我所知,没有办法访问由ngRepeat创建的范围。

以下是两个JS Bin示例:

如何在Angular 1.3.0中实现旧的行为或其相似之处?如果这是ngTransclude的预期行为,我怎么能重复一堆子节点而不知道它们是什么?

1 个答案:

答案 0 :(得分:3)

https://github.com/angular/angular.js/issues/8182

1.3决定ng-trasclude不会从指令中拉出范围。链接页面上有解决方法,

https://github.com/angular/angular.js/issues/7874 https://github.com/angular/angular.js/issues/7874#issuecomment-47647528

这是预期的行为。