2017-08-07 1 views
1

ng-repeatでチェックボックスをオンにすると、値を配列に入れなければならないというシナリオがあります。AngularJSのng-repeat内のチェックボックスの値を配列に保存

<li ng-repeat="player in team.players"> 
    <div class="row"> 
    <div class="col-md-3 m-t-xs"> 
     <input type="checkbox" ng-model="vm.newEvent.players[$index].selected" ng-change="vm.selectPlayer($index, player)"> {{player.name}} 
    </div> 
    <div class="col-md-5 m-t-xs"> 
     <label for=""> 
     <input type="radio" name="{{player.id}}" ng-change="vm.disSelectPlayer($index, player)" ng-model="vm.newEvent.players[$index].casuality.type" value="injured"> Injured 
     </label> 
     <label for=""> 
     <input type="radio" name="{{player.id}}" ng-change="vm.disSelectPlayer($index, player)" ng-model="vm.newEvent.players[$index].casuality.type" value="sick"> Sick 
     </label> 
     <label for=""> 
     <input type="radio" name="{{player.id}}" ng-change="vm.disSelectPlayer($index, player)" ng-model="vm.newEvent.players[$index].casuality.type" value="other"> Other 
     </label> 
    </div> 
    </div> 
</li> 

これはブラウザに表示されます。

enter image description here

問題は、私はFCバルセロナアコーディオンにプレイヤー名のいずれかをクリックしたとき、それはまたFCバイエルン・ミュンヘンから同じインデックス付きのプレーヤーアコーディオン、私がしたいことはすべての選手を維持することですを選択していることですそれぞれ別々の形式 私はバインディングに何かが欠けていますか?このため、機能の

+0

を使用することができ、すなわち選手オブジェクト – anu

+0

うん、私はのためのソリューションをしたい問題のthats。 –

+1

IDまたはカウンタを使用して名前を作成します。 – anu

答えて

1

使用のチェックリストモデルを願ってチェックボックスの

角度1のチェックボックス<input type="checkbox" ng-model="...">は1つのモデルにリンクされています。しかし、実際には、通常、1つのモデルに複数のチェックボックスからのチェック値の配列を格納する必要があります。チェックリストモデルはコントローラ内に追加のコードなしでそのタスクを解決します。あなたは<input type="checkbox">タグの属性で遊ぶ必要があります:checklist-valueを設定

  • NG-モデルの代わりにchecklist-modelを設定

    • - 配列項目として選ばれるべきか

    Documentation

  • 0

    この:vm.disSelectPlayer($index, player)

    私はあなたが各プレイヤーに異なるIDまたはインデックスを与えるためにここにインデックス<li ng-repeat="player in team.players">を追加しなければならないと思います。

    このお試しください: <li ng-repeat="(key ,player) in team.players">

    を、あなたが呼び出す関数内でこのキーを使用します。 vm.disSelectPlayer($index, player , key)

    私はリストのためのAngularJSディレクティブ、それは便利です:)

    +0

    それはあなたと一緒でしたか? – ZAhmed

    0

    これは上からですあなたが書いた#4オンラインで

    ng-model="vm.newEvent.players[$index].selected". 
    
    人の

    あなたが使用していた両親の代わりに、こののあなたは、私はこれらのチェックボックスは同じ名前を持っていると思う

    ng-model="vm.player.selected". 
    

    OR

    ng-model="vm.team.players[$index].selected". 
    
    関連する問題