2016-11-14 25 views
0

$index値がng-ifブロック内で増加しません。上記のブロックで

<div ng-repeat="household in census.households track by $index"> 
 
    <div ng-if="household.ask_for_tobacco"> 
 
     <input id="tobacco_{{$index}}" type="checkbox" ng-model="member.smoker"> 
 
     <label for="tobacco_{{$index}}"></label> 
 
    </div> 
 
</div>

、私はその中にNGリピートとng-ifを使用しています。私は条件ng-ifに従い、設定要素idは$indexです。要素IDは、毎回0に設定されています。1,2,3...

ng-ifが削除されても、必ず動作します。誰もが同じ問題を抱えていた。私に解決策を教えてください。

+0

は '$親を試してみてください$ index'。 'ng-if'が新しいスコープを作成するため、 – Weedoze

+1

私は問題を再現できません、私はテストするためにフィドルに入れます[ここにチェック](http://jsfiddle.net/2Lk2ve2v/14/) –

+0

[ng-if not duplicate ng-repeatで$ indexを比較する](http://stackoverflow.com/questions/30619023/ng-if-not-comparing-index-in-ng-repeat ) – Mistalis

答えて

0

ng-ifは独自のスコープを作成し、ng-repeatによって作成される反復の範囲へのアクセスを妨げます。

あなたはng-showを使用することはできませんので、私の提案は、あなたがこのようなあなたのng-repeatにフィルタを適用することである:

<div ng-app="app" ng-controller="MyCtrl"> 
    <div ng-repeat="household in households | filter: { ask_for_tobacco: true }"> 
    <input id="tobacco_{{$index}}" type="checkbox"> 
    <label for="tobacco_{{$index}}">index {{ $index }} id = {{ household.id }}</label> 
    </div> 
</div> 

ここで働くの例を参照してください:http://jsfiddle.net/m25afg12/9/

+0

フォーム提出で問題を引き起こす可能性のある条件falseでも入力を作成するので、ng-showは使用できません –

+0

Hmm。 census.households.filter(h => h.ask_for_tobacco)でng-repeatを実行したらどうなりますか? – s3raph86

関連する問題