219

親リスト (foos) のインデックスを、子リスト (foos.bars) の関数呼び出しの引数として使用したいと考えています。

誰かが $parent.$index の使用を推奨している投稿を見つけましたが$index、のプロパティではありません$parent

親のインデックスにアクセスするにはどうすればよいng-repeatですか?

<div ng-repeat="f in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething($parent.$index)">Add Something</a>
    </div>
  </div>
</div>
4

6 に答える 6

282

私のコード例は正しく、問題は実際のコードでは別のものでした。それでも、この例を見つけるのが難しいことはわかっているので、他の誰かが探している場合に備えて答えています.

<div ng-repeat="f in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething($parent.$index)">Add Something</a>
    </div>
  </div>
</div>
于 2013-02-11T22:51:09.630 に答える
220

ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeatによると、選択した変数にキーまたは配列インデックスを格納できます。(indexVar, valueVar) in values

だからあなたは書くことができます

<div ng-repeat="(fIndex, f) in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething(fIndex)">Add Something</a>
    </div>
  </div>
</div>

$parent.$index を使用すると、1 レベル上でも問題はありませんが、複数の親が存在する場合は、混乱する可能性があります。

注:$indexは引き続き各スコープで定義され、 に置き換えられませんfIndex

于 2013-09-20T10:52:17.027 に答える
12

次のコードで祖父母インデックスを制御することもできます

$parent.$parent.$index
于 2015-11-16T06:44:15.087 に答える
2

use $parent.$index . where parent は、親の繰り返しオブジェクトのオブジェクトを表すだけです。

于 2015-10-08T09:59:41.690 に答える
0

複数の親がいる場合、 $parent は機能しません。その代わりに、init で親インデックス変数を定義して使用できます。

<div data-ng-init="parentIndex = $index" ng-repeat="f in foos">
  <div>
    <div data-ng-init="childIndex = $index" ng-repeat="b in foos.bars">
      <a ng-click="addSomething(parentIndex)">Add Something</a>
    </div>
  </div>
</div>
于 2017-11-29T09:50:12.653 に答える