问题在于将复选框(已选中/未选中)的状态绑定到对象值。
HTML:
<div ng:controller="Ctrl">
<div ng:repeat="(letter, number) in obj">
{{letter}} and {{number}}
<input type="checkbox" ng:model="obj[letter]">
</div>
控制器:
function Ctrl() {
this.obj = {a:true,b:true};
};
当单击第一个复选框时,它会影响第二个复选框的状态,但模型是正确的,因此obj变为{a:false,b:true}。
示例可以在 http://jsfiddle.net/alexpetrov/tRxzr/
如何解决这个问题?
答案 0 :(得分:6)
将ng-repeat绑定到对象而不是基本类型。
function Ctrl() {
this.obj = [{id: 'a', checked: true}, {id: 'b', checked: true}];
}
绑定到原始类型会混淆ng-repeat,这是一个错误: https://github.com/angular/angular.js/issues/933
答案 1 :(得分:0)
当JSON不完全在您的控件中时,您将获得一个原始数组而不是一个对象。你想对它进行ng-repeat。
将ng-repeats绑定到基本数组的复选框并获取所选项。请参阅此处的plunker代码。