2013-07-25 2 views
1

자주 업데이트되는 여러 구성 요소가 포함 된 상당히 복잡한 앱이 있습니다. 예를 들어, 시계.Angularjs에서 한 번에 하나의 스코프를 적용/렌더링 할 수 있습니까?

페이지의 하위 섹션에만 한 번에 $ apply/$ digest를 호출 할 수 있습니까? 예를 들어 모든 단일 시계 틱에 대해 페이지의 모든 감시자를 호출하고 싶지는 않습니다.

나는 $ scope. $를 완전히 무시하고 지시문에서 시계 요소를 수동으로 업데이트함으로써이를 수행 할 수 있음을 알고 있습니다. 저에게 희망이 있습니까?

EDIT : 사실, $ apply가 $ rootScope에서 다이제스트를 시작하기 때문에, $ apply가 아닌, 확인하고 싶은 범위에서 시작하여 dun $ digest가 원하는 MAYBE처럼 보입니다. 이것을 할 수있는 유효한 방법입니까? 당신이 $scope.$apply()를 호출 할 때마다

http://plnkr.co/edit/C8aOswf46qx2GoD5uL9Y?p=preview

답변

0

는 또한 그 범위 내에있는 모든 범위에 $apply() 호출합니다. 페이지의 제한된 부분에 $apply()으로 전화를 걸려면 해당 섹션에 자신의 범위가 있어야합니다.이 범위는 페이지의 해당 섹션에 컨트롤러를 추가하여 수행 할 수 있습니다. 그런 다음 해당 컨트롤러를 사용하여 섹션 컨트롤러에서 $scope.apply()을 사용하여 페이지의 해당 섹션 내의 범위를 업데이트 할 수 있습니다.

- 편집 - $ apply와 $ digest의 차이점에 대한 자세한 내용은 아래 주석을 참조하십시오.

또한 참조 : 구성 요소가 정말 분리하는 경우

+1

달리 하자는 plunker 데모입니다 :

이 예제를 참조하십시오 http://plnkr.co/edit/C8aOswf46qx2GoD5uL9Y?p=preview –

+0

데모는 $ 사이에 혼란을 야기 할 수있다 적용하고 $ digest. $ apply()의 끝에서 $ rootScope에 $ digest()를 호출합니다. 데모가 $ rootScope.foo의 값을 업데이트하기 때문에 $ scope. $ apply()가 호출되면 $ rootScope는 $ rootScope.foo 값의 변경 사항을 소화합니다. – James

0

, 당신은 자신의 각 응용 프로그램 인스턴스에서 자주 업데이트를 생성하는 자들을 분리 할 수있다. 그들은 독립적 인 다이제스트주기를 가질 것입니다.

앱은 계속 통신 할 수 있지만 약간의 오버 헤드가 있습니다.

2 개의 앱을 보유하려면 수동으로 애플리케이션을 시작해야합니다 (ng-app 대신 bootstrap 사용). 여기에 내가 생각했던,하지만 http://plnkr.co/edit/K3bnACFi79g5Kh0kFS66?p=preview

+0

그래, 이건 우리가 생각한 것입니다. 하지만 우리가 단일 응용 프로그램 인스턴스의 일부로 액세스 할 수있는 편리한 기능을 포기하는 것처럼 보입니다. –

+0

개별 앱 사용에 대한 생각이 너무 많아서 가장 중요한 기능을 나열 할 수 있습니까? 감사! – Sylvain

+1

예를 들어 여러 응용 프로그램을 가지고있는 오버 헤드를 제외하고는 구성 요소 등을위한 angularjs 템플릿 캐시를 잃어 버리고 내장 된 $ http 항목 (메트릭 등)을 꾸미기위한 중앙 위치를 잃어 버렸습니다. 앱 등을 연결하기 위해 우리 자신의 커뮤니케이션 레이어를 작성하는 책임이 있습니다. –

관련 문제