2014-07-25 3 views
0

리터럴 대신 ng-include에 표현식을 사용하면 모든 관찰자가 완료 될 때까지 표현식이 반복해서 평가됩니다.ng-include는 계속해서 식을 계속 호출합니까?

이것이 어떻게 작동하는지는 알 수 있지만 실제로 예상되는 동작인지 확인하고 대안이 있는지 확인하려고합니다. 이미이 실현 같이

function getTemplateUrl(routeName) { 
     var route = _.findWhere(routes, { name: routeName }); 

     if (route == null) throw (routeName + " is not defined in config.route.js"); 

     return route.config.templateUrl; 
} 

답변

0

그래서 함수 만 재평가된다는 것을 알게 된 후이를 범위로 이동 했으므로 getTemplateUrl이 여러 번 호출되지 않습니다.

$scope.relatedInsuredsTemplateUrl = $scope.getTemplateUrl('RelatedInsureds'); 

내 HTML 조각은 지금이 없습니다

<div data-ng-include="relatedInsuredsTemplateUrl"></div> 
+0

html로 유지하려면 초기화를 위해'ng-init'을 사용할 수도 있습니다. –

+0

매우 좋은 하나! 비록 거의 무시할지라도 자원을 소비하지 못하게합니다. –

1

: 여기

<div data-ng-include="getTemplateUrl('RelatedInsureds')"></div> 

자바 스크립트입니다 :

예를 들어,이 조각은 AngularJS와 그주기를 통과 할 때 getTempalteUrl가 여러 번 호출하게됩니다 ngInclude의 src 속성이 $ digest주기마다 다시 평가되기 때문에 예상되는 동작입니다.

한 가지 사실은이 사실이 당신에게 어떤 문제를 제기합니까? CSS에서는 일반적으로 브라우저가 몇 번이나 다시 칠해 지는지 신경 쓰지 않습니다. 음 ... 함수가 가볍고 빠르면이 함수가 여러 번 평가되는지 상관하지 않겠습니다.

내 말은,이 코드가 효과가 있습니까? 예.

빠른가요? 예.

확인. 그렇다면 해결 방법을 찾는 이유는 무엇입니까?

+0

아무것도 더 추가 할 : 나는 당신이 말하는 것을 얻을 –

+1

(이 같은 필요하지 따옴표는 문자 아니다),하지만 난 궁금합니다 :) – epitka

+0

+1 그래서 우리는 프로그래머입니다 : P –

관련 문제