Laziale
Laziale

Reputation: 8225

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

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.

Upvotes: 45

Views: 127422

Answers (2)

PSL
PSL

Reputation: 123739

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');
   }
}

Upvotes: 71

Brennan
Brennan

Reputation: 5742

The state of the checkbox will be reflected on whatever model you have it bound to, in this case, $scope.answers[item.questID]

Upvotes: 0

Related Questions