web-dev-qa-db-ja.com

子ng-repeatから親ng-repeatのアクセスインデックス

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

誰かが$ 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>
213
Coder1

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

<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>
277
Coder1

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>

1つ上のレベルはまだ$ parent。$ indexでかなりきれいですが、いくつかの親が上がると、物事が面倒になることがあります。

注:$indexは各スコープで引き続き定義されます。fIndexに置き換えられることはありません。

217
Samuli Ulmanen

を見てみましょう 私の同じような質問に対する答え
$indexをエイリアスすることで、$parent.$parent.$indexのような狂気のものを書く必要はありません。


$parent.$indexが使っているより洗練された方法--- ng-init

<ul ng-repeat="section in sections" ng-init="sectionIndex = $index">
    <li  class="section_title {{section.active}}" >
        {{section.name}}
    </li>
    <ul>
        <li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(sectionIndex)" ng-repeat="tutorial in section.tutorials">
            {{tutorial.name}}
        </li>
    </ul>
</ul>

プランカー: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info

41
vucalur

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

$parent.$parent.$index
11
user3728092

あなたは単に使用することができます使用する$ parent。$ index。ここでparentは親の繰り返しオブジェクトのオブジェクトを表します。

2
Vivek Panday