我有这个标记:
<input ng-model="obj.mtdEstimate" ng-change="vm.percentChanged(obj)" type="number" />
在控制器中更新我的模型时,我注意到触发了ngChange事件
控制器:
myObjects.forEach(o => o.mtdEstimate = xx);
*我确信更改控制器中的属性会触发事件,因为我可以注释掉属性更新的行并停止事件触发器:
pp.mtdEstimate = x;
从堆栈跟踪,我可以看到注入的代码触发此事件(看起来不像我的代码):
(function($filter,getStringValue,ifDefined,plus
/*``*/) {
"use strict";
var fn=function(s,l,a,i){var v0,v1,v2,v3=l&&('vm' in l),v4,v5=l&&('positionPricing' in l);if(!(v3)){if(s){v2=s.vm;}}else{v2=l.vm;}if(v2!=null){v1=v2.percentChanged;}else{v1=undefined;}if(v1!=null){if(!(v5)){if(s){v4=s.positionPricing;}}else{v4=l.positionPricing;}v0=v2.percentChanged(v4);}else{v0=undefined;}return v0;};return fn;
})
答案 0 :(得分:0)
至少在我的设置中,这实际上看起来像一个bug。
我删除了 type =&#34; number&#34; ,并且该事件已停止触发。
看起来像angular会添加一个过滤器,该过滤器会在值更改时触发,从而触发ngChange。
无法在plunker上重现这一点,所以它很奇怪。