ng-repeat 내부 함수가 4 번 호출 됨 (AngularJs)

Halaster

다음 HTML 코드는 ul을 21 개의 전화로 채 웁니다.

<li ng-repeat="phone in phones" ng-class="{'digestTest': countDigestOccurences(phone) }">
  <p>{{phone.snippet}}</p>
</li>

countDigestOccurences사전을 사용하여 countDigestOccurences()전화 당 호출 횟수를 추적하는 JavaScript 메서드입니다 .

$scope.countDigestOccurences = function(phone){
  var phoneFound = false;     
  $.each($scope.digestOccurencesPerPhone, function(){
      if(this.phone.id == phone.id){
        phoneFound = true;
        this.occurences++;
      }
  });

  if(!phoneFound)
  { 
    $scope.digestOccurencesPerPhone.push({
      phone: phone,
      occurences: 1
    });
  }
}

이 방법을 통해 countDigestOccurences가 전화 당 4 번 호출된다는 것을 분명히 알 수 있습니다 . 나는 내 인생을 위해 왜 4 번 호출되는지 알 수 없습니다.

여기에 이미지 설명 입력

최신 정보:

전화 항목의 HTML이 다음과 같더라도주기 수는 4로 유지됩니다.

    <li ng-repeat="phone in phones "
        class="thumbnail phone-listing" ng-class="{ 'digestTest': countDigestOccurences(phone),  'digestTestAgain': randomMethodDoesNothing() }">
      <p>{{phone.snippet}}</p>
    </li>
마티 우

각도 컴파일 뷰에 식을 참조 할 때, 등 ng-class="function()", ng-model="toto"A는 $watch그것을 생성된다. 모든 다이제스트주기에서 시계는 모델에 변경 사항이 있는지 확인하기 위해 더티 검사를 통해 평가됩니다.

따라서 ng-repeat에는 전화 컬렉션에 한 명의 감시자, 각 전화 인스턴스에 한 명의 감시자, 기능에 대한 한 명의 감시자가 있습니다. 뷰의 함수는 범위 변수가 아니기 때문에 angular는 함수의 결과가 변경되었는지 알 수 없으므로 (함수에서 다른 범위 변수에 영향을 미칠 수 있음) 각 다이제스트주기에 대한 함수 결과를 재평가합니다. .

그래서 당신은 전화 + 전화 + 기능 + 마지막 다이제스트 사이클이 정상인지 확인합니다 : 4 사이클

드문 경우를 제외하고는 뷰에서 함수를 사용하지 않는 것이 좋습니다. 대신 함수의 결과를 범위 변수에 저장하고이 변수를 뷰에 렌더링하십시오.

업데이트 :

다음 논의로 인해 ng-class 지시문에 대해 하나의 watch si 만 생성되었으며 ng-class의 값에 해당합니다. 즉,와 함께 ng-class="{'toto' : functionOne(), 'titi' : functionTwo()}", 시계가 켜져 있습니다 : {'toto' : functionOne(), 'titi' : functionTwo()}. AngularJs 지시어 코드에서 발행 :scope.$watch(attr[name], ngClassWatchAction, true);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AngularJS : ng-repeat 내부에서 컨트롤러 함수 호출

분류에서Dev

ng-repeat 내부의 Angularjs 함수가 너무 많이 호출되었습니다.

분류에서Dev

ng-repeat 내부에서 초기화 함수 호출

분류에서Dev

-repeat- AngularJS 내부를 클릭하지 않고 함수 호출

분류에서Dev

React useState setter 내부 업데이트가 두 번 호출 됨

분류에서Dev

함수가 여러 번 호출 됨

분류에서Dev

콜백 함수가 두 번 호출 됨

분류에서Dev

angularjs의 ng-repeat 내부 배열의 첫 번째 값 필터링

분류에서Dev

Angularjs ng-show 메서드가 너무 많이 호출 됨

분류에서Dev

angularjs 컨트롤러 내부에서 두 번 호출되는 함수

분류에서Dev

AngularJS : ng-repeat 내부 이미지에 토글 기능 추가

분류에서Dev

AngularJS 이벤트 메서드가 여러 번 호출 됨

분류에서Dev

JQuery + AngularJS : mousedown 이벤트가 여러 번 호출 됨

분류에서Dev

ng-repeat에서 함수 호출?

분류에서Dev

격리 된 범위 내부의 Angularjs ng-click은 외부 범위에서 함수를 호출합니다.

분류에서Dev

ng-repeat 루프 내부 호출 메서드

분류에서Dev

부품 생성자가 두 번 호출 됨

분류에서Dev

반응에서 함수가 여러 번 호출 됨

분류에서Dev

PageViewController 대리자 함수가 두 번 호출 됨

분류에서Dev

Angularjs-첫 번째 ng-repeat에서 $ index를 가져 와서 두 번째 ng-repeat에 사용

분류에서Dev

AngularJS ng-repeat에서 컨트롤러에 대한 함수 호출이 무한 해집니다.

분류에서Dev

AngularJS-두 번 호출되는 함수

분류에서Dev

테이블 AngularJs의 ng-repeat 내부 ng-if

분류에서Dev

함수가 두 번만 호출 될 때 루프 당 4 번 호출됩니다.

분류에서Dev

ng-repeat 내부의 ng-switch 내부의 angularJS에 의해 orderBy?

분류에서Dev

AngularJS : ng-repeat에서 현재 반복 번호를 얻는 방법

분류에서Dev

두 번째 배열을 사용하여 ng-repeat 내에 AngularJS {{expression}} 채우기

분류에서Dev

AngularJS 함수가 여러 번 호출됩니까?

분류에서Dev

AngularJS ngEnter-함수가 두 번 호출됩니다.

Related 관련 기사

  1. 1

    AngularJS : ng-repeat 내부에서 컨트롤러 함수 호출

  2. 2

    ng-repeat 내부의 Angularjs 함수가 너무 많이 호출되었습니다.

  3. 3

    ng-repeat 내부에서 초기화 함수 호출

  4. 4

    -repeat- AngularJS 내부를 클릭하지 않고 함수 호출

  5. 5

    React useState setter 내부 업데이트가 두 번 호출 됨

  6. 6

    함수가 여러 번 호출 됨

  7. 7

    콜백 함수가 두 번 호출 됨

  8. 8

    angularjs의 ng-repeat 내부 배열의 첫 번째 값 필터링

  9. 9

    Angularjs ng-show 메서드가 너무 많이 호출 됨

  10. 10

    angularjs 컨트롤러 내부에서 두 번 호출되는 함수

  11. 11

    AngularJS : ng-repeat 내부 이미지에 토글 기능 추가

  12. 12

    AngularJS 이벤트 메서드가 여러 번 호출 됨

  13. 13

    JQuery + AngularJS : mousedown 이벤트가 여러 번 호출 됨

  14. 14

    ng-repeat에서 함수 호출?

  15. 15

    격리 된 범위 내부의 Angularjs ng-click은 외부 범위에서 함수를 호출합니다.

  16. 16

    ng-repeat 루프 내부 호출 메서드

  17. 17

    부품 생성자가 두 번 호출 됨

  18. 18

    반응에서 함수가 여러 번 호출 됨

  19. 19

    PageViewController 대리자 함수가 두 번 호출 됨

  20. 20

    Angularjs-첫 번째 ng-repeat에서 $ index를 가져 와서 두 번째 ng-repeat에 사용

  21. 21

    AngularJS ng-repeat에서 컨트롤러에 대한 함수 호출이 무한 해집니다.

  22. 22

    AngularJS-두 번 호출되는 함수

  23. 23

    테이블 AngularJs의 ng-repeat 내부 ng-if

  24. 24

    함수가 두 번만 호출 될 때 루프 당 4 번 호출됩니다.

  25. 25

    ng-repeat 내부의 ng-switch 내부의 angularJS에 의해 orderBy?

  26. 26

    AngularJS : ng-repeat에서 현재 반복 번호를 얻는 방법

  27. 27

    두 번째 배열을 사용하여 ng-repeat 내에 AngularJS {{expression}} 채우기

  28. 28

    AngularJS 함수가 여러 번 호출됩니까?

  29. 29

    AngularJS ngEnter-함수가 두 번 호출됩니다.

뜨겁다태그

보관