<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
事件被触发了。
是否有解决此问题的方法?
答案 0 :(得分:10)
根据the docs:
仅当输入值的更改导致将新值提交给模型时,才会评估ngChange表达式。
不会评估:
- 如果从$ parsers转换管道返回的值有 没有改变
- 如果输入因模型而继续无效 将保持无效
- 如果以编程方式更改模型而不是通过a更改 更改为输入值
因此,当它被JavaScript(/ angular)更改时不会被触发。
您可以做的是自己触发更改功能:
function filterPrivateDocument(val) {
if(val) {
this.documentTarget = 'Private';
this.change();
}
}