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指令