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

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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。