카테고리 없음
angular deep copy
타우렌주술사
2016. 5. 14. 16:56
javascript 에서 새로운 변수, 혹은 오브젝트를 생성하고 거기에 기존의 오브젝트를 입력하면
soft link 상태가 된다
예를 들자면
$scope.arr = [{name: "test"}];
이렇게 생긴 배열이 있다고 가정했을 때
var arr = $scope.arr; 혹은
var arr = $scope.arr.clone 이런식으로 새로운 변수에 기존의 오브젝트를 입력하게 되면
soft link 상태가 된다
기본적으로 양방향 데이터 바인딩을 제공하는 앵귤러의 특성상 $scope.arr의 값이 변할경우 var arr 역시 변하게 되는 것이다.
그래서 이런 상황을 방지하려면 deep copy를 해야하는데 이때 필요한 것이
angular.copy 함수다
사용 예시 )
$scope.arr = [{name: "test"}];
var arr = [];
angular.copy($scope.arr, arr);
위와 같은 방법으로 angular.copy 함수를 이용하면 $scope.arr의 값이 변하더라도 arr의 값은 영향을 받지 않는 상태가 된다