2

問題は、チェックボックスの状態 (チェックされている/チェックされていない) をオブジェクトの値にバインドすることです。

HTML:

<div ng:controller="Ctrl"> 
   <div ng:repeat="(letter, number) in obj">
     {{letter}} and {{number}}
     <input type="checkbox" ng:model="obj[letter]">
</div>    

</p>

コントローラ:

function Ctrl() {
    this.obj = {a:true,b:true};    
};​

最初のチェックボックスをクリックすると、2 番目のチェックボックスの状態に影響しますが、モデルは正しいため、obj は {a:false, b:true} になります。

例は http://jsfiddle.net/alexpetrov/tRxzr/にあります。

これを修正する方法は?

4

2 に答える 2

6

ng-repeat をプリミティブ型ではなくオブジェクトにバインドします。

function Ctrl() {
    this.obj = [{id: 'a', checked: true}, {id: 'b', checked: true}];
}

http://jsfiddle.net/tRxzr/1/

プリミティブ型へのバインドは ng-repeat を混乱させます。これはバグです: https://github.com/angular/angular.js/issues/933

于 2012-05-04T11:29:47.367 に答える
0

JSON が完全に制御されていない場合、オブジェクトではなくプリミティブ配列が取得されます。同じで ng-repeat を実行したい。

ng-repeat をチェックボックスにプリミティブ配列にバインドし、選択されたアイテムを取得します。plunker コードはこちらを参照してください。

http://plnkr.co/edit/i6IiGY42h8CiOMaqT9SZ?p=preview

于 2013-12-18T20:30:25.733 に答える