5

我们正在将我们的应用程序升级到 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 的预期行为,我如何在不知道它们是什么的情况下重复一堆子节点?

4

1 回答 1

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

这是预期的行为。

于 2014-10-16T15:16:23.307 回答