Detect if checkbox is checked or unchecked in Angular.js ng-change event

Laziale picture Laziale · Dec 10, 2014 · Viewed 120.6k times · Source

I want to detect if a checkbox has been checked or unchecked when a click is happening on the checkbox.

This is what I have:

<input type="checkbox" ng-model="answers[item.questID]" ng-change="stateChanged()" />

And then in the controller I have:

$scope.stateChanged = function () {
    alert('test');
}

I'm able to fire the alert when I do check/uncheck but how can I detect the state of the checkbox? I did research a bit to find a similar issue but I wasn't able to get what I need.

Answer

PSL picture PSL · Dec 10, 2014

You could just use the bound ng-model (answers[item.questID]) value itself in your ng-change method to detect if it has been checked or not.

Example:-

<input type="checkbox" ng-model="answers[item.questID]" 
     ng-change="stateChanged(item.questID)" /> <!-- Pass the specific id -->

and

$scope.stateChanged = function (qId) {
   if($scope.answers[qId]){ //If it is checked
       alert('test');
   }
}