原代码是这样的:
$scope.showUpgradeForm = function(item){
$scope.upgrade = item;
$scope.upgrade.vercode++;
// 其它操作
}
代码解释:我的JS代码里有一个list列表用于repeat显示,这里的item是从循环中传入的列表数据object。然后调用showUpgradeForm操作时问题来了,由于AngularJS的双向绑定机制,我这里对upgrade的vercode赋值导致list中的item也更新了,也就是显示的列表内的数据也跟着发生了变化。
解决思路:这个问题给人一看就是赋值指针出了问题,通过查询资料,果然。在JS中对变量赋值变量时,常规是会复制一份拷贝,但如果值是一个对象(Object)时,传入的将是对象的地址。
解决方法:百度了一些JS对象拷贝的代码,一看真是吓死宝宝了,一大段的代码,果断弃用,大不了不用AngularJS惹。。。后来还是在AngularJS相关的群里找到了解决方法,原来AngularJS已经封装了相关的解决方法:
$scope.showUpgradeForm = function(item){
$scope.upgrade = angular.copy(item);
$scope.upgrade.vercode++;
// 其它操作
}
重点是 angular.copy() 方法,这里不得不再次感慨一下真*大神的智慧。