The problem should be that you are not checking the checkboxes inside Angular. If you want Angular magic to work, you have to do all your manipulations with the model inside the Angular area. I created a plunker to demonstrate. :
index.html
<!DOCTYPE html> <html data-ng-app="demo"> <head> <script data-require=" jquery@1.9.0 " data-semver="1.9.0" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.js"></script> <script data-require=" angular.js@ *" data-semver="1.0.7" src="http://code.angularjs.org/1.0.7/angular.js"></script> <link rel="stylesheet" href="style.css" /> <script src="script.js"></script> </head> <body data-ng-controller="DemoController"> <div data-ng-repeat="object in objects"> {{object.name}}: <input type="checkbox" data-ng-model="object.isChecked"> </div> Master: <input type="checkbox" data-ng-click="triggerAll()"> {{objects}} </body> </html>
script.js
"use strict"; var demo = angular.module("demo", []); function DemoController($scope) { $scope.objects = [ { name : "First", isChecked : true }, { name : "Second", isChecked : false } ] $scope.triggerAll = function(){ angular.forEach($scope.objects, function(value){ value.isChecked = !value.isChecked; }) } }
Note that all flags are run using ngClick , and not with the usual onClick or jQuery handler. This allows Angular to do dirty checks and behave correctly.
source share