it-roy-ru.com

Передайте значение флажка в ng-click angular

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

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

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

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

20
Serge

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

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

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

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

Рабочая демонстрация

<input type="checkbox" id="cb1" ng-model="check" ng-change="checkAll(check)" ng-true-value="YES" ng-false-value="NO"/> Citizen
30
Nidhish Krishnan

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

<input type="checkbox" id="cb1" ng-click="checkAll($event.target.checked)" />
2
Arntor

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

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

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

1
Sajal

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

<input type="checkbox" ng-model="value" id="cb1" ng-click="checkAll(value)" />
1
Daniel Tran