最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Binding checkboxes to object values in AngularJs - Stack Overflow

programmeradmin0浏览0评论

The problem is in binding the state of the checkbox (checked/unchecked) to the object values.

HTML:

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

Controller:

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

When the first checkbox is clicked it affects the state of the second checkbox, but the model is correct, so obj bees {a:false, b:true}.

Example can be found at /

How to fix this?

The problem is in binding the state of the checkbox (checked/unchecked) to the object values.

HTML:

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

Controller:

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

When the first checkbox is clicked it affects the state of the second checkbox, but the model is correct, so obj bees {a:false, b:true}.

Example can be found at http://jsfiddle/alexpetrov/tRxzr/

How to fix this?

Share Improve this question asked May 4, 2012 at 10:46 petrov.alexpetrov.alex 1,0892 gold badges12 silver badges21 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

Bind ng-repeat to objects rather than primitive types.

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

http://jsfiddle/tRxzr/1/

Binding to primitive types confuses ng-repeat, it's a bug: https://github./angular/angular.js/issues/933

When the JSON is not entirely in your control, you get a primitive array instead of an object. You want to do an ng-repeat on the same.

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

发布评论

评论列表(0)

  1. 暂无评论