从Javascript以编程方式触发ng-change事件

时间:2019-04-17 07:49:52

标签: javascript html angularjs

我正在尝试通过一些javascript以编程方式触发ng-change事件。

这是我试图触发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 个答案:

答案 0 :(得分:1)

根据文档

  

仅当输入更改时才评估ngChange表达式   值会导致将新值提交给模型。

     

它不会被评估:

     
      
  • 如果$ parsers转换管道返回的值具有   不变
  •   
  • 如果自模型以来输入仍然继续无效   将保持为空
  •   
  • 如果通过编程方式更改了模型[strong],而不是通过   更改为输入值
  •   
     

注意,此指令要求ngModel为   礼物。

您可以做的是从控制器中手动调用函数

user.setSelectedSite(user.siteId)

或使用$ scope。$ watch。