Передать значение флажка в угловой щелчок

18

Есть ли способ перейти к угловой директиве ng-щелкнуть значение связанного ввода?

Другими словами, что должно заменить this.value в следующем:

<input type="checkbox" id="cb1" ng-click="checkAll(this.value)" />

PS. Я не хочу, чтобы обходной путь изменял значения, мне просто интересно, возможно ли передать значение ввода в качестве аргумента в угловую функцию .     

задан Serge 30.10.2015 в 09:28
источник
  • Можете ли вы добавить еще какой-то код, что вы хотите в checkAll –  Mitul 30.10.2015 в 09:30
  • добавить модель на входе и передать ее в методе –  ngLover 30.10.2015 в 09:35
  • Возможный дубликат флажка Angular и ng-click –  Kulbhushan 30.10.2015 в 10:23

4 ответа

27

Вы можете сделать следующее:

  • Используйте ng-model , если вы хотите связать компонент html к угловому охвату
  • Изменить ng-click на ng-change
  • Если вам нужно привязать некоторое значение при проверке и снятии флажка, используйте ng-true-value="someValue" и ng-false-value="someValue"
  

Порядок выполнения ng-click и ng-model неоднозначен, поскольку   они не определяют четких приоритетов. Вместо этого вы должны использовать ng-change   или $watch на $scope , чтобы убедиться, что вы получили правильные значения   от переменной модели.

Предоставлено musically_ut

рабочий демонстрационный пример

<input type="checkbox" id="cb1" ng-model="check" ng-change="checkAll(check)" ng-true-value="YES" ng-false-value="NO"/> Citizen
    
ответ дан Nidhish Krishnan 30.10.2015 в 09:40
источник
1

Присвоение ему ng-модели вернет логическое значение в зависимости от изменения к нему:

<input type="checkbox" id="cb1" ng-model="checkValue" ng-change="checkAll(checkValue)" />

Лучше использовать ng-change, а не ng-click

    
ответ дан Sajal 30.10.2015 в 09:32
источник
  • Нет смысла передавать checkValue в качестве аргумента, потому что он все равно доступен в модели ... –  Serge 30.10.2015 в 09:34
  • @Serge Да, это позволяет контролировать поток данных, и если кому-то еще нужно прочитать код, будет намного легче понять, откуда взялись эти данные. –  ThibaudL 30.10.2015 в 09:53
1

Привяжите флажок к значению и передайте его ng-click .

<input type="checkbox" ng-model="value" id="cb1" ng-click="checkAll(value)" />
    
ответ дан Daniel Tran 30.10.2015 в 09:34
источник
1

Сегодня я хотел сделать то же самое, и я вижу, что никто не ответил на реальный вопрос. Это противоречит Угловой философии, но вы можете заменить «this.value» на «$ event.target.checked»:

<input type="checkbox" id="cb1" ng-click="checkAll($event.target.checked)" />
    
ответ дан Arntor 03.11.2017 в 14:10
источник