2014-11-21 4 views
0

angularjs styleguide에서 "컨트롤러 as"사용법을 따라보기에서 호출 할 수있는 기능이있는 컨트롤러를 만듭니다 (예 : ng-if). 그러나 내가이 함수를 호출했을 때 3 번 호출 된 것처럼 보이지만 어떻게되었는지는 모른다. 여기ControllerAs 패턴이있는 함수가 여러 번 호출되었습니다

(function() { 
 
    angular.module('app', []); 
 

 
    function test() { 
 
    console.log('init'); 
 
    var vm = this; 
 
    vm.title = "test title"; 
 
    vm.called = function() { 
 
     console.log('get called'); 
 
    } 
 
    } 
 

 
    angular 
 
    .module('app') 
 
    .controller('test', test); 
 

 
})();
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script> 
 
    <meta charset="utf-8"> 
 
    <title>JS Bin</title> 
 
</head> 
 

 
<body> 
 
    <div ng-controller="test as vm"> 
 
    {{ vm.title }} {{ vm.called(); }} 
 
    </div> 
 
</body> 
 

 
</html>

답변

0

당신은 {{binding}}들에 사용 된 표현을 평가하는 방법을 몇 번이나 제어가없는 JSBin link입니다. AngularJS는 자신의 가치가 변경되었을 수도 있다고 생각할 때마다 다시 평가합니다. 즉, 표현식에 함수 호출이 포함되어 있으면 $digest에 호출됩니다.

이것은 AngularJS 표현식에서 함수 호출을 사용할 때 성능에 영향을 끼치기 위해 매우이어야 함을 의미합니다. 일반적으로 스코프 변수에 바인드하는 것이 가능합니다. $rootScope.$digest이 더 자주 호출되는 대규모 응용 프로그램에서이 기능을 사용하면 동일한 기능을 더 많이 호출하게됩니다.

+0

매우 명확한 답변입니다! 감사! –

관련 문제