2014-12-04 3 views
2

AngularJS 컨트롤러에서 개인 메소드를 만드는 방법은 무엇입니까?AngularJS 컨트롤러에서 개인 메소드 만들기

것은 나는 현재 이런 식으로 일을했다,하지만 난 그게 바람직한/올바른 방법인지 궁금 :

app.controller('MyController', function($scope){ 
    myPrivateFunction(); 
    anotherPrivateFunction(); 

    ... 

    $scope.someScopeMethod = function(){ 
     ... 

     anotherPrivateFunction(); 

     ... 
    }; 

    $scope.anotherScopeMethod = function(){ 
     ... 

     myPrivateFunction(); 

     ... 
    }; 

    ... 

    function myPrivateFunction(){ 
     // 
    } 

    function anotherPrivateFunction(){ 
     // 
    } 

}); 
+0

그래서 AngularJS 컨트롤러를 의미하셨습니까? AngularJS 공장에 말 했잖아요. 네, 그렇게해야합니다. –

+0

@NewDev : 죄송합니다. 두 가지 질문이 있습니다. 질문이 업데이트되었습니다. 어쨌든, 공장마다 다르게해야합니까? – budhajeewa

+0

비슷한 생각입니다. 결국 JavaScript 객체/함수 일뿐입니다. –

답변

3

이 올바른 것입니다. 함수는 컨트롤러 생성자 함수 범위에서만 볼 수 있습니다. 함수에서 선언 된 함수가 상위 함수 컨텍스트에서만 표시되는 팩토리 및 바닐라 j의 경우에도 마찬가지입니다.

공장에서
+0

답장을 보내 주셔서 감사합니다. :) – budhajeewa

1

는 아래와 같이처럼 보이는 것입니다 :

.factory('my-factory', function(){ 

     function privareMethodA() { 

     } 

     var anotherPrivateMethod = function() { 

     } 

    return { 
     publicMethodA = function() { 

     }, 

     publicMethodB = function() { 

     } 

    }; 

}); 
다른 공장 또는 사용할 수 컨트롤러 publicMethodA()publicMethodB()로 공장을 주입 한 후 그래서

하지만 privateMethodA()anotherPrivatemethod()가 외부에서 액세스 할 수 없습니다 이 공장의 컨트롤러의 액세스 가능성은 스 니펫과 유사합니다.

+0

답변을 주셔서 고맙습니다 Isuru. :) – budhajeewa

관련 문제