Итак, я столкнулся с проблемой, которую я потратил некоторое время на изучение и безрезультатно, не нашел рабочего решения.
Моя ситуация:
- У меня есть ряды флажков, которые запускают функцию с ng-change (пользователь щелкает флажок).
- Каждый флажок привязан к логическому значению ng-model независимо от того, установлен флажок или нет.
- Для каждой строки у меня есть флажок «выбрать все», который запускает функцию, которая перебирает флажки в этой строке и обновляет логическое значение их ng-модели до значения true или false в зависимости от значения выбора всех.
- В DOM выбор всех работает нормально, и каждое логическое значение флажка изменяется, что приводит к установке или снятию флажков.
- Даже если логическое значение ng-model для флажков изменено с true на false, функция ng-change не запускается.
Я попытался внедрить наблюдателей в ng-модели, чтобы попытаться запустить каждое изменение ng, но это не сработало.
Я попытался изменить ng-change на ng-click и принудительно включить функцию выбора всех в .trigger('click'), которая вроде работает, но является хакерской и работает неправильно, если один из флажков уже нажат. Это приводит к тому, что это будет противоположное, если истинное значение.
Есть ли способ запустить функцию ng-change для флажка с контроллера, если пользователь не щелкает флажок напрямую? Я передаю параметры через функцию, поэтому ее нужно запускать из ng-change, а не только в контроллере.
Вот ссылка на JS Bin того, что я пытаюсь выполнить.
Если щелкнуть верхнее поле (выбрать все), заполнятся все нижние поля. Если щелкнуть одно из нижних полей, запустится функция ng-change, которая покажет некоторый текст в DOM запущенного. Он не показывает текст (не запускает ng-change), если нажата кнопка «Выбрать все».