AngularJS:ngTranslude和ngRepeat的访问范围
AngularJS: ngTransclude and access scope of ngRepeat
我们正在将应用程序升级到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>
等内容。
在更新之前,这一切都很顺利。重复的transcluded元素位于从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的预期行为,我如何在不知道它们是什么的情况下重复一堆子节点?
https://github.com/angular/angular.js/issues/8182
1.3决定,ng traclude不会从该指令中删除范围。在链接的页面上有一个变通办法,
https://github.com/angular/angular.js/issues/7874https://github.com/angular/angular.js/issues/7874#issuecomment-47647528
这是预期的行为。
相关文章:
- 可以't访问JavaScript函数范围中的变量
- 如何从chrome扩展访问angularjs根范围
- 访问内部功能范围的元素,而不是敲除中的外部
- Angularjs:访问范围变量数组并计算平均值
- 来自控制器外部的角度JS访问范围
- 在指令内访问范围
- 使用多线程.js访问范围
- Angular js 指令控制器访问范围属性,但返回未定义
- 从子元素访问范围指令
- 角度:从<脚本>标记内访问范围
- 使用 HTML 中的字符串访问范围键
- AngularJS:ngTranslude和ngRepeat的访问范围
- Angularjs访问范围
- 从 angular.js 指令中的控制器访问范围变量
- 简单的例子可以't访问范围
- 角→渲染和克隆元素->访问范围
- 指令angular中的访问范围控制器变量
- 无法访问范围内的Javascript变量
- jQuery插件选择器访问范围
- 指令模板函数的Angular访问范围