Ответ 1
Функция ng-change
не позволяет передавать $event
в качестве переменной.
От соавтора в официальном gythub repo от AngularJS:
ng-change не является директивой для обработки события изменения (я понимаю что это сбивает с толку, учитывая имя), но на самом деле уведомляется, когда ngModelController. Вызывается $setViewValue() и изменения стоимости (поскольку ng-change добавляет слушателя к $viewChangeListeners). Итак, это так, как ожидалось.
Подробнее об этом можно узнать ng-change не получает аргумент $event
Как вы можете решить свои требования?
Просто передайте item.selected
в функцию ng-change и проверьте его значение.
HTML
<input type="checkbox"
value="{{item.id}}"
ng-model="item.selected"
ng-change="updateTotal(item.selected)"> {{item.name}}
контроллер
$scope.updateTotal = function(item_selected) {
if (item_selected) {
$scope.totalSelected++;
}
else {
$scope.totalSelected--;
}
}
ОБНОВЛЕНО
Вы можете протестировать его здесь, в plnkr