AngularJs ng-change手动触发事件

shr*_*nsh 4 onchange angularjs 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';
}
Run Code Online (Sandbox Code Playgroud)

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

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

解决这个问题的任何方法?

dev*_*qon 10

根据文件:

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

它不会被评估:

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

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

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

function filterPrivateDocument(val) {
    if(val) {
        this.documentTarget = 'Private';
        this.change();
    }
}
Run Code Online (Sandbox Code Playgroud)

看到这个jsfiddle