我有两个变量。但是更新 1 会导致另一个也更新。谁能解释这里发生了什么?
$scope.pages = [];
$scope.pagesSave = [];
var functionName = function(){
$service.doThing1().then(function(res1){
$scope.pagesSave = res1;
console.log(res1)
$service.doThing2().then(function(res2){
$scope.pages = $service.formatThings(res2, res1);
console.log($scope.pages)
}, function(err){});
}, function(err){});
$scope.pages 应该是最终产品
$scope.pagesSave应该是预先格式化的数据
但是,控制台记录这些变量显示它们是相同的。
更奇怪的是,执行 $service.doThing1() 后立即控制台日志显示“res1”具有正确的长度,但仅包含 $scope.pages 中的数据,如此图所示。
即使格式化功能尚未发生,也缺少 2 个
有人知道这里发生了什么吗?
如果有帮助的话,我正在使用 Chrome 来记录控制台日志
我认为在您的formatThings
中您发送res1
作为您的函数的结果,这意味着$scope.pagesSave
将等于 res1
等于 $scope.pages
。
因此,解决方案是使用 angular.copy()
创建 res1
的深拷贝,并使用创建的对象来清理它。您可以分享您的formatThings
吗?
我是一名优秀的程序员,十分优秀!