Запуск события ng-change программно из Javascript - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь вызвать событие ng-change программно из некоторого JavaScript.

Это элемент, который я пытаюсь вызвать событие ng-change для

<select ng-model="user.siteId" name="siteSelect" ng-change="user.setSelectedSite(user.siteId)" class="ng-pristine ng-untouched ng-valid ng-empty">
    <option value="" selected="selected">Please Select A Site</option>
    <option id="siteOpts" value="1" ng-repeat="site in user.sites  | orderBy:'siteName'" class="ng-binding ng-scope">Site1</option>
    <option id="siteOpts" value="2" ng-repeat="site in user.sites  | orderBy:'siteName'" class="ng-binding ng-scope">Site2</option>#
    <option id="siteOpts" value="3" ng-repeat="site in user.sites  | orderBy:'siteName'" class="ng-binding ng-scope">Site3</option>
</select>

Я знаю, что могу выбрать значение, используя этот код

document.querySelector('.ng-pristine.ng-untouched.ng-valid.ng-empty').value = 2;

Однако это не приводит к запуску события ng-change.

Как выбрать значение и обеспечить запуск события ng-change?

1 Ответ

1 голос
/ 17 апреля 2019

Согласно документации

Выражение ngChange вычисляется только тогда, когда изменение входного значения вызывает фиксацию нового значения в модели.

Не будетоценивается:

  • , если значение, возвращаемое из конвейера преобразования $ parsers, не изменилось
  • , если входное значение продолжало быть недопустимым, поскольку модель останется нулевой
  • если модель изменена программно, а не путем изменения входного значения

Обратите внимание, эта директива требует наличия ngModel.

Чтовы можете сделать это вручную вызвать вашу функцию с вашего контроллера

user.setSelectedSite(user.siteId)

или использовать $ scope. $ watch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...