angularjs的ng-repeat指令下的scope作用域

詩&遠方發表於2015-05-11

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

 

相關文章