0

나는 angularjs를 처음 사용합니다.angularjs 서비스의 가비지 수집 변수

enter image description here

글로벌 서비스 간 컨트롤러 통신을위한 수단으로 사용된다 -는 : I는 아래의 도면에 따라 인 AngularJS와 서비스를 설계했다. 즉, 상위 및 하위 컨트롤러간에 공유되는 데이터가 포함됩니다. Grand Parent 컨트롤러는 parentController2가있는 팝업 대화 상자를 열고 childController3이있는 다른 팝업을 엽니 다.

이제 내가 원하는 것은 글로벌 서비스에 저장된 데이터가 연결된 컨트롤러가 파괴되면 null로 설정해야한다는 것입니다. 그것은 내 지식에 따라 서비스가 anglejs에서 싱글 톤이기 때문입니다. 따라서 서비스가 필요하지 않더라도 응용 프로그램의 수명주기에 걸쳐 서비스가 가변적으로 유지되는 것을 원하지는 않습니다.

또한 controllerAs 구문을 사용하고 있으며 $ scope (범위에서 '$ destroy'이벤트에서 가비지 수집을 할 수 있다는 것을 알고 있습니다.)을 사용하여 anglejs 2.0과 호환되도록했습니다.

ControllerAs 구문이 사용되는 경우 컨트롤러에서 필수적이지 않은 서비스에서 변수를 수집 할 수있는 방법이 있습니까?

새내기 질문 사과. 미리 감사드립니다.

답변

0

ng-view를 사용하면 가비지 수집에 대한 또 다른 해결책이됩니다. 가비지 수집은보기가 변경되는 즉시 범위를 삭제하기 때문입니다. ngroute와 함께 사용되지만 더 나은 가비지 수집 메커니즘을 제공합니다. 당신은 NG-뷰 코드

function destroyLastScope() { 
    if (lastScope) { 
     lastScope.$destroy(); 
     lastScope = null; 
    } 
    } 

이 기능은 상위 범위가 무엇이며

+0

파괴됩니다 부모로부터 자식에게 가면 즉, 이전 범위의 범위를 파괴 지침 내에서 호출됩니다 확인하실 수 있습니다 여기서 마지막으로? –

+0

자녀에게 이사하는 경우 부모의 범위입니다. –