2013-08-29 2 views
2

, 당신은 작성해야 :각도가 콜백 함수 내부에서 함수를 반환하는 이유는 무엇입니까? 각도의 필터를 정의하려면

angular.module('app', []) 
.filter('mix', function() { 
    // Why do we return a function here? 
    return function (input) { 
     var output; 
     // doing some business here 
     return output; 
    }; 
}); 

왜 각도 반환 filter 함수에 전달 된 콜백 함수 내부의 기능을? 그냥 필터 정의의 자리 표시 자 및 템플릿으로 사용하지 않는 이유는 무엇입니까? 이 구문은 개발자에게 친숙하지 않습니다. Angular가이 함수를 중첩하는 데 사용하는 제한 사항은 무엇입니까? 그것은 패턴인가?

angular.module('app', []) 
.filter('mix', function (input) { 
    var output; 
    // doing some business here 
    return output; 
}); 

답변

2

이 모든 각도는 의존성 삽입 (Dependency Injection)을 수행하는 방식과 관련이있다 :

나는 (jQuery를 다른 라이브러리를 많이 사용 기준) 논리적 정상 보이는 생각이 구문이다.

필터에 서비스를 삽입 할 수 있지만 종속성 주입을 사용하지 않는 함수를 반환 할 수 있어야합니다.

예를 들어, 필터가 $location 서비스를 사용하는 가정 해 봅시다 : 당신은이 방법이 필터 만 사용할 수 있습니다 "개인"함수를 만들 수 있도록 그 일을,이 예에서 볼 수

angular.module('app', []) 
.filter('mix', function ($location) { 
    // Location got injected. 

    // create some private functions here 
    function process(input) { 
     // do something with the input and $location 
    } 

    return function (input) { 
     return process(input); 
    }; 
}); 

.

+0

그렇다면'[ '$ location', function() {}]'구문을 사용하여 중첩 함수가 아닌 필터로 사용할 수 있습니까? 폐쇄와 관련이 있습니까? –

+0

예. 배열 (축소 형 안전) 구문을 사용하려는 경우 여기에서도 작동합니다. –

+0

그리고 네, 클로저가 그 일부입니다. 내'process()'함수는 반환 함수에서 닫혀있다. 높은 수준의 함수에 넣은 다른 변수도 닫힙니다. –

관련 문제