2017-08-17 2 views
0

AngularJSの新機能です。 このオブジェクト "Optouts.Spouse"を、オブジェクトプランから繰り返しているチェックボックスにバインドしようとしています。私が持っている私のJSでのSOng-repeat内のオブジェクトにチェックボックスをバインドする

$scope.optouts = { spouse: {}, children: {} }; 
$scope.plans = {mec:true;anotherone:true}; 

そして、私のHTMLで私が持っている:

<span ng-repeat="(plan,x) in plans">{{plan}} 
    <input type="checkbox" ng-model="optouts.spouse.plan" 
      ng-checked="!optouts.spouse.plan"> 
</span> 

しかし、そのオブジェクトに結合しません。私は間違って何をしていますか?どうすればこの作品を作れますか?ありがとう!!!


表示はるかは本当にありません。..

their.plans = {}; 
their.toggles = {}; 
their.optouts = { spouse: {}, children: {} }; 
their.optouts = { spouse: {'mec':true}, children: {} }; 
their.spouse = { has:true, 
        firstName: 'Mary', 
        lastName:'Doe', 
        birthDate:'8/10/1989', 
        gender:'Female' } 
their.plans = { mec:true, mr1: true, anotherone:true } 
+0

あなたはjsonを提供できますか?答えを改善する。文書のために –

+0

thx、私は本当にdoesntです。 attrs上で繰り返すことができます。私は何か新しいことを学ぶ。私は答えを削除する方法では、原因はisviusly解決しない。あなたの質問に、あなたが繰り返し行う必要があるjsonを提供することが秀でていることを知っているならば、 –

+0

[ng-checked directive](https://docs.angularjs.org/api/ng/directive/ngChecked)のドキュメントは、 'ng-model'ディレクティブには使用しないでください。予期しない動作につながるからです。あなたは何をしようとしているのですか?コードはあなたの意図が不明確なほど壊れています。 – georgeawg

答えて

1

あなたは計画を超える繰り返しているので、私はあなたがこれを達成しようとしていると想像:

<span ng-repeat="(plan,x) in plans">{{plan}} 
    <input type="checkbox" ng-model="optouts.spouse.plans[plan]"> 
</span> 

あなたが作成してい何optouts.spouse.planのプロパティですが、必要なものは計画の真偽値の「マップ」です。つまり、​​をplanの現在の値と組み合わせることで、これを達成できます。

デフォルトでは、すべてのプランは、値がないため、最初はチェックされません。チェックボックスは視覚的に真または偽を表しますので、ng-checkedを使用する必要はありません。チェックボックスが少なくとも1回切り替わると、そのプランは真偽値を持ちます。

trueに設定する必要がある場合は、コントローラーで反復処理を行い、それぞれの値を,に初期化することをお勧めします。

関連する問題