angularApp中有多少个Scope

时间:2016-06-16 08:21:21

标签: javascript angularjs

我的问题是下面代码中有多少个范围元素,包括isolatedScope,$ scope,$ rootScope。

 <script>
          angular.module('initExample', [])
            .controller('ExampleController', ['$scope', function($scope) {
              $scope.list = [['a', 'b'], ['c', 'd']];
            }]);
        </script>
       <body ng-app="myApp">
        <div ng-controller="ExampleController">
          <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
            <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
               <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
            </div>
          </div>
        </div>
 </body>

1 个答案:

答案 0 :(得分:3)

会有$rootScope, 然后会有来自scope的控制器ExampleController

然后,由于ng-repeat为每一行创建了一个新的scope,因此外ng-repeat将创建list.length范围,ng-init不会创建新的范围, 现在内部ng-repeat为每个外部ng-repeat运行一次,因此它会为每个列表项创建innerList.length范围。

因此,总范围为:$rootScope + $scope来自Controller + list.length * innerList.length

在这种情况下总计1 + 1 + 2 * 2 = 6.

(我不确定为什么需要这些信息,但现在是这样)。

P.S:您可以查看文档以了解哪些directive创建了一个新的(隔离的)scope。 另请注意,如果innerList具有每个列表项的可变长度,则公式将包括innerList长度与外部列表长度的总和,而不是直接乘法,

即(1 * i1 + 1 * i2 + ... outerlist.length次),其中i1,i2是内部列表长度