2016-06-20 3 views
0

페이지에 업데이트 할 데이터가있는 컨트롤러가 있지만 컨트롤러에 주입되는 데이터에 문제가 있습니다.데이터가 변수에 1 회/1 회만 저장됩니다.

기본적으로 내 컨트롤러에 삽입 된 데이터는 항상 실시간으로 업데이트되지만, 페이지에로드 된 첫 번째 데이터는 변수에 저장되고 변경되지 않아야하지만 어떤 이유로 업데이트됩니다.

내 코드 :

vm.storedData = null; 

function activate() { 
    if(vm.storedData == null){ 
     vm.storedData = data.condition_lines; 
    } 
} 

activate(); 

내가 뭔가 잘못하고 있습니까?

+0

그 이유는 예를 들어, 코드에서 "="수행 할 때, 매우 간단합니다 vm.storedData = data.condition_lines; 기본적으로 "data.contidion_lines"에 대한 포인터 인 새로운 변수를 만들면 data.condition_lines에 대한 모든 변경 사항이 vm.storedData에 반영됩니다. – encore

답변

1

나는이 방법으로 자바 스크립트를 저장하는 객체를 발생 믿습니다.

data 개체입니다. data은 condition_lines를 저장하지 않으며 condition_lines에 대한 참조를 저장하므로 vm.storedData = data.condition_lines;을 설정하면 참조로 지정됩니다. 결과적으로 vm.storedData는 항상 data.condition_lines와 같습니다.

angular.copy()를 사용하면 효과적으로 값으로 할당 할 수 있습니다 (두포에서보다 복잡한 작업을하지만 결과는 동일합니다).

vm.storedData = angular.copy(data.condition_lines);

0

다른 개체에서 참조 변수 (vm.storedData)를 지적한 것처럼 보이기 때문에 data.condition_lines의 값이 변경되기 때문에 storedData도 변경됩니다.

condition_lines의 내용을 storedData에 복사하면 원하는 것을 얻을 수 있습니다.

이 작업을 할 수 있습니다 : https://docs.angularjs.org/api/ng/function/angular.copy

관련 문제