ng-repeat指令在迭代的时候,每次迭代都会创建一个新的scope,比如下面的代码:
<div ng-repeat="list in lists" ng-controller="listController">
<some-directive/>
</div>
app.controller('listController',function($scope){
$scope.lists = [1,2,3,4,5]
})
div所在的scope就是listController控制器定义的$scope,而some-directive指令并没有控制器,虽然它没有控制器,但是它却是有自己的scope的,且scope下有一个属性list.还有一个属性$index,等等.
所以,ng-repeat指令创建了很多个同样的迭代,每个迭代都有自己的scope,每个scope下都有自己的list属性和$index属性等.这样,如果是在写ng-repeat指令下面的指令的时候(比如这里的some-directive),需要知道它是有自己的scope的.
这在我之前自己写的模拟ng-repeat指令的时候,代码里就可以看出:
angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令