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};    
};​

单击第一个复选框时,它会影响第二个复选框的状态,但模型是正确的,因此 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。

To bind ng-repeats to checkboxes to a primitive array and get the selected items. See the plunker code here.

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

于 2013-12-18T20:30:25.733 回答