В угловом со мной произошло следующее
function(){
$scope.varObj = {"name" : "john" , "age" : "20" };
$scope.tempVar1 = $scope.varObj;
$scope.tempVar2 = $scope.varObj ;
}
Теперь, если я изменяю tempVar2 автоматически, значение tempVar1 изменяется.
function(){
$scope.varObj = {"name" : "john" , "age" : "20" };
$scope.tempVar1 = $scope.varObj;
$scope.tempVar2 = $scope.varObj;
$scope.tempVar2.name = "mathews";
console.log($scope.tempVar1.name);
}
Выход должен быть "john", потому что я изменяю значение tempVar2, а не tempVar1. Но к удивлению, выход - "mathews".
Я попробовал как угловые.copy, так и угловые. Extend, но оба они дают одинаковый результат. Может кто-нибудь помочь
Я не вижу причин, чтобы он не работал с angular.copy
Heres - скрипка с демоверсией
Это происходит из-за двухстороннего связывания
Попробуйте это
$scope.tempVar1 = angular.copy($scope.varObj);
Используйте angular.copy()
для него. По умолчанию используется только копия с оператором присваивания =
что означает совместное использование одного и того же пространства памяти, поэтому, если вы измените какой-либо из двух объектов, он отразится и на втором.
angular.copy()
создаст глубокую копию объекта
DOC: -
Создает глубокую копию источника, который должен быть объектом или массивом.
$scope.varObj = {"name" : "john" , "age" : "20" };
$scope.tempVar1 = angular.copy($scope.varObj);
$scope.tempVar2 = angular.copy($scope.varObj);
$scope.tempVar2.name = "mathews";
console.log($scope.tempVar1.name);