$scope.showUpgradeForm = function(item){ $scope.upgrade = item; $scope.upgrade.vercode++; // 其它操作 } $scope.showUpgradeForm = function(item){ $scope.upgrade = angular.copy(item); $scope.upgrade.vercode++; // 其它操作 }
代码解释:我的JS代码里有一个list列表用于repeat显示,这里的item是从循环中传入的列表数据object。然后调用showUpgradeForm操作时问题来了,由于AngularJS的双向绑定机制,我这里对upgrade的vercode赋值导致list中的item也更新了,也就是显示的列表内的数据也跟着发生了变化。
解决思路:这个问题给人一看就是赋值指针出了问题,通过查询资料,果然。在JS中对变量赋值变量时,常规是会复制一份拷贝,但如果值是一个对象(Object)时,传入的将是对象的地址。