我有两个变量。但更新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进行控制台日志
答案 0 :(得分:1)
我认为,在formatThings
你的函数内发送res1
,$scope.pagesSave
意味着res1
等于$scope.pages
,等于angular.copy()
因此,解决方案是使用res1
创建formatThings
的深层副本,并使用创建的对象进行清理。你能分享一下#b-banner {
background-color: #d6d6d6;
width: 100 auto;
height:300px;
}
#b-banner-content {
padding-top:3%;
padding-left: 6%;
}
吗?