2013-10-13 4 views
0

ng-show (또는 other)와 같은 지시어의 표현식이 중복 된 이유는 무엇입니까? 나는 단순한 jsfiddle 예 http://jsfiddle.net/fA5YX/을 만들었다. 브라우저 콘솔에서 확인하십시오.AngularJs : ng-show에서 두 번 확인

<div ng-app ng-controller="ctrl" ng-show="test()">shown</div> 
<script> 
function ctrl($scope) { 
    $scope.test = function() { 
     console.log('check'); 
     return true; 
    } 
} 
</script> 

어떻게 멈 춥니 까? 하나만 수표가 필요해.

답변

2

는 아마도 Controller function getting called twice using ng-show에 연결 - 인용 :

각 소화주기에서, 모든 시계를 들면, AngularJS와 어떤 변화가 있는지 확인하기 위해 관련된 표현을 평가하고있는 경우, 는에 (리스너를 호출 ng-show/ng-hide의 경우 수신자 은 ready()이 반환 한 값을 기준으로 요소를 표시하거나 숨 깁니다.

1

모든 감시자는 다이제스트 주기로 실행됩니다. 다이제스트주기는 결과 중 어느 것도 값이 변경되지 않을 때까지 반복됩니다 (또는 무한 루프에 대한 각도 가드). 이것이 당신의 관찰자가 여러 번 움직이는 이유입니다. 요컨대, 앵글 워커가 한 번만 해고당하는 것에 의지하지 마십시오. 앵귤러 앵글이 왜 작동하는지에 대한 기본 원칙에 어긋나기 때문입니다.

당신이 성취하려는 것에 대한 세부 사항을 게시하면, 우리는 각 철학에서 실제로 작동하는 패턴으로 인도 할 수 있습니다.