2016-12-16 3 views
4

ダイナミックなアイテム(たとえば車)のリストがあるので、固定長になっていません。私は今ダイナミックロードされたアイテムのng-model

<div class="item" ng-repeat="item in itemList"> 
    <input type="checkbox"> 
    <label>{{item.name}}</label> 
</div> 

:NGリピートループにおけるその後

itemList = [ 
    { id: 0, name: 'bmw' }, 
    { id: 1, name: 'audi' }, 
    { id: 3, name: 'vw' }, 
    { id: 4, name: 'subaru' }, 
    { id: 5, name: 'mercedes' } 
]; 

を、Iループこのリストを、いくつかのチェックボックスを作成するので、私は項目を選択することができます。私はそれがこのようになります。このリストをロードするとユーザオブジェクトを持つ。このオブジェクトには配列 "cars"があり、選択したすべての車をプッシュし、選択を解除するとその車を削除します。

userObj = [ 
    { 
     name: 'user1', 
     cars: [] 
    } 
]; 

私は車を選択したとき、私はそれを選択解除するのであれば、それは私のユーザーオブジェクトに配列carsに押し込まれても削除する必要があります。私のオブジェクトは、次のようになります。私はng-changeでこれをしなければならないことを知っており、これは私の本当の問題ではないでしょう。私の問題は、チェックボックスのng-modelです。私はそれを最善にする方法を知らない。私はこれはかなり論理的なすべてのリストに同じngモデルを使用することはできません。何が最善の方法でしょうか?インターネット上で解決策が見つかりませんでした。

+1

は、私の知る限り、ngModelは(https://docs.angularjs.org/api参照を介して結合します/ ng/directive/ngChange)ので、ng-modelを介してバインドされている値を新しい参照に再割り当てする場合は、適切に参照する値を更新して調整する必要があります。 –

+1

これはあなたの質問に答えますか? http://stackoverflow.com/questions/14514461/how-to-bind-to-list-of-checkbox-values-with-angularjs –

答えて

1

あなたは以下のような各項目itemListcheckboxchangeに、特定のユーザーのcars配列を更新することができます。 [(ドキュメント)]に記載されているよう

マークアップ

<div class="item" ng-repeat="item in itemList"> 
    <input type="checkbox" ng-model="item.checked" ng-change="itemChange(user)"> 
    <label>{{item.name}}</label> 
</div> 

コード

$scope.itemChange = function(user){ 
    var selectedCarsIds = $scope.itemList.filter((i) => i.checked).map(item => item.id) 
    //update cars array for specific user 
    user.cars = selectedCarsIds; 
} 
+0

こんにちは、これは完璧です、ありがとう!乾杯。 – MrBuggy

+0

@MrBuggyそれを知ってうれしい、ありがとう:) –

関連する問題