2015-01-07 3 views
1

여러 AngularJS 컨트롤러에서 공유하고 싶은 두 가지 기능이 있지만 프로토 타입 기능을 수행하는 방법을 정확히 모르겠습니다.AngularJS에서 원형 함수를 공유하는 방법은 무엇입니까?

이전 기능은 오른쪽 제어기 정의 하였다 :

Array.prototype.contains = function(needle) { 

... 

} 

이 어떤 어레이가 contains 방법으로 체인화 될 수 있었다. 그러나 서비스 외부의 배열에 대해서는 contains이 정의되어 있지 않으므로 공장 출하시 작동하지 않습니다.

(function() { 

'use strict'; 

angular 
    .module('app') 
    .factory('FunctionsFactory', FunctionsFactory); 

function FunctionsFactory() { 

    return { 
     contains: contains, 
     exactlyContains: exactlyContains 
    }; 
    ... 

여러 AngularJS 컨트롤러에서 이러한 유형의 기능을 공유하는 가장 좋은 방법은 무엇입니까?

+0

어쩌면 내가 당신의 질문을 이해할 수 없지만 공유 기능을 위해 최선의 방법이라고 생각합니다.이 기능을 별도의 서비스에 넣은 다음이 서비스를 여러 컨트롤러에 주입하십시오. – alexpods

답변

5

이러한 전역 공통 기능을 수행하는 가장 좋은 장소는 실행 블록입니다. 그들은 Main 메서드의 Angular에서 가장 가까운 것입니다.

angular.module('myApp', []) 
    .run(function(){ 
     Array.prototype.contains = function(){ 
      console.log('array contains'); 
     };  
    }); 

실행 블록은 인젝터가 생성 된 후 실행되고 응용 프로그램을 킥 스타트하는 데 사용됩니다.