通过神秘的$ eval =>加载Angular调用ngChange事件功能($过滤器,向GetStringValue,ifDefined,加

时间:2017-09-01 14:18:56

标签: angularjs

我有这个标记:

<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;
})

enter image description here

1 个答案:

答案 0 :(得分:0)

至少在我的设置中,这实际上看起来像一个bug。

我删除了 type =&#34; number&#34; ,并且该事件已停止触发。

看起来像angular会添加一个过滤器,该过滤器会在值更改时触发,从而触发ngChange。

无法在plunker上重现这一点,所以它很奇怪。