Angulaire $parent et $parent.$parents sont du même contrôleur lors de l'utilisation de ng-repeat

J'aimerais comprendre pourquoi lors de l'utilisation d'un ng-repeat avec une certaine contrôleur sur le point de le répéter, le parent de l'élément et le grand-père de cet élément sont le même contrôleur. Je m'attendais à le grand-père d'être le parent d'un contrôleur de parent, pas le même contrôleur.

Ici le code pour clarifier ce

HTML

<div ng-controller="MainController">
  {{name}}
  <div ng-controller="SecondController">
  {{name}}
    <ul>
      <li ng-repeat="item in list" ng-controller="ItemController">
         {{item.name}} {{$parent.name}} {{myDad}} {{myGrandpa}}
      </li>
    </ul>
    <div ng-controller="ThirdController">
         {{name}} {{$parent.name}} {{myDad}} {{myGrandpa}}
    </div>
  </div>
</div>

JS

angular.module('app', []);


angular.module('app')
  .controller('MainController', function($scope) {
  $scope.name = "MainController";
 })
.controller('SecondController', function($scope) {
  $scope.name = "SecondController";
  $scope.list = [
   {'name': 'aaa'}
  ];
})
.controller('ItemController', function($scope) {
  $scope.name = "ItemController";
  $scope.myDad = $scope.$parent.name;
  $scope.myGrandpa = $scope.$parent.$parent.name;
})
.controller('ThirdController', function($scope) {
  $scope.name = "ThirdController";
  $scope.myDad = $scope.$parent.name;
  $scope.myGrandpa = $scope.$parent.$parent.name;
});

Ici un CodePen

La ng-repeat a son propre champ sans doute, beaucoup d'autres directives peuvent créer leurs propres étendues, donc il est préférable de ne pas compter sur $parent. Portée propriétés sont héritées, donc si vous voulez vous assurer que vous avez accès à un certain élément dans un enfant, vous pouvez toujours créer un objet, comme $scope.secondData = {}; et l'accès secondData sur votre périmètre.
Mais dans mon cas, je voudrais $broadcast quelque chose de la forme la grand-parent après une certaine fonction sur le petit-enfant. Donc probablement $rootScope est la meilleure option?

OriginalL'auteur stilllife | 2014-12-26