请谨慎升级Angular

请谨慎升级Angular

这次Angular的升级带有挺多严重的bug。建议等到1.3稳定下来之后再进行升级,估计1.3.15左右才能把大bug解决掉。说一下升级1.3以后,遇到的两个大bug。


select(已经在1.3.9解决了)

相应的issue。这个bug导致的后果就是我们在设置默认值的时候,会没法正常显示。出现这一错误的angular源码是

if (ngModelCtrl.$viewValue == value) {
    $element.val(value);
    if (unknownOption.parent()) unknownOption.remove();
}

我们知道为select设置的value是跟option的value相对应的。那上面的代码导致select设置了一个$viewValue的值。而这个值不是真正的option上的value,而是展示给用户看的value。所以最终展示效果就是,用户看到select上显示出空白的一篇。原因是浏览器找不到相应的value对应的option。 不过火狐浏览器能够正确解析,我们只能说,太强大了。

ngShow

相应的issue。这个bug导致的问题是,我们在写directive的时候,ngShow不能按我们所设想的那样,显示或者隐藏标签。 出现这一错误的angular源码是

scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
    $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {
    tempClasses: NG_HIDE_IN_PROGRESS_CLASS
    });
});

跟踪了下代码,发现value的值永远是字符串,那么$animate[value ? 'removeClass' : 'addClass']获得的值永远是$animate['removeClass']。这不出错才怪。

Angular1.3相对1.2来说,代码做了很大的改变。隐藏的bug肯定很多,再次建议,等到1.3.15左右的时候再来做升级打算。如果各位朋友还遇到其他bug,请贴出来告知大家。

收藏 0分享浏览 1117
7年前
跟帖
暂无
说几句
广告位 点击查看投放指南

我的收藏