2014-01-18 4 views
2

그것은이 plunkr에서 질문을 참조하는 것이 더 쉽습니다 : 첫 추가하려면 클릭 '과'초를 추가하려면 클릭 '에 http://plnkr.co/edit/EFZCAXWFui0foMbfZkPb?p=preview다른 범위는

을 클릭, 당신은 클릭 할 수있는' 자물쇠 '아이콘을 클릭하면 일부 항목이 동일한 범위 (또는 동일한 ng 모델)를 갖는 것으로 보입니다.

'클릭하여 추가하십시오'이 동작은 angular.copy를 수행하며 다른 스코프와 동일한 스코프를 공유하지 않습니다. 왜 그렇습니까?

각 '자물쇠'아이콘은 다른 항목이 아닌 그 자체에만 적용되도록 범위를 어떻게 분리합니까? 이 라인에서

답변

5

:

var row = {"groupname":Math.floor(Math.random() * 9999999) + 1}; 

새 개체 과를 만들 당신이 변수 row에 저장되고이 객체에 대한 참조를 만들 수 있습니다. 이 참조 (배열에 row 객체의 사본이 아님) 만 추가하므로 두 배열의 요소는 동일한 객체를 가리 킵니다.

angular.copy는 배열의 "전체 복사본"을 생성하므로 모든 포함 된 개체가 복사되고 배열에는 이러한 새 개체에 대한 참조가 포함됩니다.

당신은 별도의 개체가 개체 복제 할 clickFirst 기능에 angular.copy 사용하려면 :

var row = {"groupname":Math.floor(Math.random() * 9999999) + 1}; 
$scope.products1.push(row); 
$scope.products2.push(angular.copy(row)); 
+0

감사합니다. angular.copy가 속임수를 사용했습니다. –

+0

매일 매일 새로운 각도로 배웁니다. 고맙습니다! –