我们正在将我们的应用程序升级到 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 示例:
- 旧(1.3.0-beta.1)行为:http: //jsbin.com/kalutu/1/edit
- 新(1.3.0)行为:http: //jsbin.com/gufunu/1/edit
如何在 Angular 1.3.0 中实现旧行为或类似行为?如果这是 ngTransclude 的预期行为,我如何在不知道它们是什么的情况下重复一堆子节点?