카테고리 없음

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의 값은 영향을 받지 않는 상태가 된다