AngularJS - снятие флажка

0

Я использую angularjs как можно больше - я редактирую некоторую унаследованную систему, и я не могу позволить себе слишком сильно меняться. Поэтому, в основном, мне нужно реализовать функцию, которая отменяет каждый флажок на странице. Самое простое решение - не меняя слишком много существующей системы - заключалось в использовании angular.element. Теперь я знаю, это ДЕЙСТВИТЕЛЬНО плохое решение, но мне нужно заставить его работать.

В настоящее время он работает (по крайней мере визуально), так как каждый флажок не установлен, однако при другом нажатии флажок не работает - его нужно нажать дважды, прежде чем снова активировать его.

Вот демонстрация того, как обстоят дела, и как я реализовал частичное решение: http://jsbin.com/xicubegira/1/edit?html,js,output. Пример использования выглядит следующим образом.

  • Установите флажок - счетчик увеличится до 1, флажок отметит
  • Нажмите на флажок еще раз - счетчик увеличится до 2, флажок будет снят
  • Установите флажок - счетчик увеличится до 3, флажок отметит
  • Нажмите кнопку "снимите флажок" - счетчик не будет увеличиваться, флажок будет снят (это нормально)
  • Нажмите на флажок еще раз - флажок становится "отмечен", но счетчик не увеличивается!

Итак, как я могу снять все флажки на странице и сохранить первоначальную функциональность? Я предполагаю, что проблема в том, что в поле флажка ничего не меняется, поэтому ng-change не запускается.

Спасибо за вашу помощь!

Теги:
checkbox

1 ответ

2
Лучший ответ

Ваша проблема заключается в том, что вы не меняете свою модель, поэтому ng-change нельзя вызвать, поскольку данные не изменяются.
Разве вы не можете сделать простой набор в false для вашей модели:

$scope.uncheck = function(){        
    $scope.confirmed = false;
};
  • 0
    Да, это помогло. Даже не пришлось использовать angular.element , отлично!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню