각도 스코프 기능이 여러 번 실행됨
범위에 함수를 정의했습니다.또, {{}}내의 뷰에서 호출하면, X회 실행됩니다.
컨트롤러
function testCtrl($scope) {
$scope.myFunc = function(name) {
return "Hello " + name;
}
}
HTML
<div>{{myFunc('Joe')}}</div>
이 예에서는, http://jsfiddle.net/rbRvD/2/ 를 참조할 수 있습니다.
또는 Plunker: http://plnkr.co/edit/LLQ7cKs2fEoBwv0C5XPE
이건 잘못된 방법인 것 같은데, 왜 이렇게 자주 실행되는 거죠?
기능은 10회 실행됩니다.왜 10개죠?왜 100은 안 돼?
정답은 다음 문서에 있습니다.
워치 리스너에 의해 모델이 변경되어 다른 리스너가 기동할 가능성이 있습니다.이것은 변경이 검출되지 않을 때까지 워처를 재실행함으로써 실현됩니다.무한 루프 교착 상태를 방지하기 위해 재실행 반복 제한은 10입니다.
이러한 현상이 발생하는 것은 Angular가 다이제스트를 다시 실행하고 시계를 다시 작동하도록 모델을 변경하고 있음을 의미합니다.특정의 경우, 카운터를 갱신하는 함수를 호출하고 있습니다.이것은 페이지에 표시됩니다).카운터 값이 변경되면 다이제스트가 다시 실행됩니다.이 다이제스트는 카운터를 갱신하는 함수 등을 호출합니다.
Angular는 사용자가 모형을 변경하고 뷰가 이러한 변경에 반응할 수 있도록 해주기를 기대합니다.
이것은 예상되는 동작입니다.각도 표현({{expression}}
)는 각 $subloop(루프마다 여러 번)으로 재연결됩니다.즉, 계산상 표현은 경쾌하게 유지되어야 합니다.
그 때문에, 식평가에 의해서, AJAX 콜이나 그 외의 부하가 높은 조작이나 비동기 조작은 행해지지 않습니다.또, 필요한 경우는, 그 결과를 캐싱 할 필요가 있습니다.
AngularJs는 렌더링 시 스코프의 모델을 변경할 것을 권장하지 않습니다.스코프의 모델을 변경하려면 Controller 또는 Directive에서 변경합니다.
뷰는 데이터(이 경우 범위 값)만을 표시하는 위치라고 생각하십시오. 데이터의 수정은 모두 컨트롤러 또는 지침에 있어야 합니다.
언급URL : https://stackoverflow.com/questions/17164230/angular-scope-function-executed-multiple-times
'programing' 카테고리의 다른 글
WordPress에서 add_action()을 저장할 위치 (0) | 2023.04.05 |
---|---|
npm install -> node-sass@4.5.0 포스트 인스톨 스크립트에서 실패했습니다. (0) | 2023.04.05 |
Oracle 페이징을 위한 LIMIT 및 OFFSET 대체 방법 (0) | 2023.04.05 |
angularjs 페이지의 RESTful API에서 서비스에 액세스하는 방법은 무엇입니까? (0) | 2023.04.05 |
c#에서 동적으로 Json 생성 (0) | 2023.04.05 |