2013-06-19 2 views
0

여러 개의 지시문이있는 페이지가 있습니다. 헤더/탐색에는 각각 고유 범위가있는 많은 지시문이 있습니다. 또한 25 개의 항목으로 구성된 반복 (ng-repeat)이 있으며 각 항목마다 자체 범위가있는 지시문을 만듭니다. 지시어AngularJS 필터가 페이지의 스코프 수와 관련하여 호출되고 있습니까?

하나는 다음과 같습니다, 양식 오류를 표시하는 사용자 정의 필터를 포함하는 양식을 포함

<span>{{ createProjectForm.name.$error | nagParseErrors }}</span> 

이제 내가 지금 가지고있는 관심사는 nagParseErrors은 약 33 시간 언제 실행되는 것입니다 이 데이터 createProjectForm.name이 (ng-model을 사용하여) 바인드 된 경우 컨트롤러 범위와 양식을 포함하는 지시문의 범위 (컨트롤러 범위의 지시문으로 전달되는 것)에만 포함되어 있어도 범위에있는 모든 내용이 변경됩니다. 나는 ng-repeat를 25 개 항목에서 1로 제한하면 필터가 9 번만 호출되기 때문에 페이지의 스코프 (또는 지시문) 수와 관련이 있음을 알고 있습니다. 이것은 내장 필터 (예 : json과 같은 경우에도 발생하며 더 자주 실행됩니다).

내가 여기서 잘못하고있는 것일 수도 있고 실제로 AngularJS에서 어떻게 작동해야 할 것인가?

현재, 지시 사항으로가는 길보다 오류를 표시하는 것이 필터보다 더 나을 수도 있지만 이제는 필터에 대한 이해를 분명히하고 싶습니다. 어떤 점에서 길 아래에서.

답변

0

이것은 여러 번 언급되었습니다. 모든 AngularJS 표현은 앱의 수명주기 전반에 걸쳐 지속적으로 재평가됩니다. 이것은 AngularJS의 양방향 데이터 바인딩이 작동하는 방식입니다.

코드에 아무 문제가 없습니다. 필터가 멱등수인지 확인해야합니다 (동일한 입력이 주어진 동일한 출력을 반환합니다).

자세한 내용은 Why Scope.$apply() calls $rootScope.$digest() rather than this.$digest()?scope docs을 참조하십시오.

관련 문제