AngularJs ng-change事件手动触发

时间:2016-04-19 07:05:18

标签: angularjs onchange angularjs-ng-change

 <input type="checkbox" value="" ng-model="filterPrivateDocCheckBox" ng-click="dl.filterPrivateDocument(filterPrivateDocCheckBox, $event)">
 <input st-search="target" class="input-sm form-control"  ng-model="dl.documentTarget" ng-change="dl.change()" />

function filterPrivateDocument(val) 
{
    if(val)
    this.documentTarget = 'Private';
}

当我点击checkBox时,我将值设置为文本框,但我看到ng-change事件未被触发。为什么呢?

而且当我在文本框中输入一些值时,我发现ng-change事件被触发了。

是否有解决此问题的方法?

1 个答案:

答案 0 :(得分:10)

根据the docs

  

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

     

不会评估:

     
      
  • 如果从$ parsers转换管道返回的值有   没有改变
  •   
  • 如果输入因模型而继续无效   将保持无效
  •   
  • 如果以编程方式更改模型而不是通过a更改   更改为输入值
  •   

因此,当它被JavaScript(/ angular)更改时不会被触发。

您可以做的是自己触发更改功能:

function filterPrivateDocument(val) {
    if(val) {
        this.documentTarget = 'Private';
        this.change();
    }
}

请参阅this jsfiddle