AngularJS
angular.js

入れ子になったng-repeatの子要素から、その親の要素を操作する

More than 1 year has passed since last update.

angularJSでng-repeatを入れ子にした状態で、子ng-repeatの要素から親の要素を操作したい場合に色々とハマったので、そのときのメモ。結構強引なので、本当はもっと良い方法があるかもしれない。

方法としては、子ng-repeatの中から$parent.$indexをメソッドに渡して、メソッド内からアクセスする。

<div ng-repeat="element in elements">
  <h2>{{ element.type }}</h2>
  <div ng-repeat="mode in modes" ng-click="changeMode($parent.$index, $index)">
    <a>{{ mode.label }}</a>
  </div>
</div>
$scope.changeMode = function(elementIndex, modeIndex) {
  $scope.elements[elementIndex].type = $scope.modes[modeIndex].type;
}

references