2013-10-12 5 views
1

jQuery에 대한 좋은 점 중 하나는 응용 프로그램 내에서 함수를 작성하고 어디서나 액세스 할 수 있다는 것입니다. AngularJS는 다른 것처럼 보이며 실망 스럽습니다. 예를 들어, 내 사이트에 다음과 같은 코드를 가지고 :다른 컨트롤러에 정의 된 함수를 어떻게 호출 할 수 있습니까?

<div id="myCtrl" ng-controller="myCtrl"> 
    <div ng-click="doSomething()">click here</div> 
</div> 

문제는 doSomething()가 다른 컨트롤러에 정의되어 있으며 따라서 작동하지 않는다는 것입니다. 이것은 내가 겪었던 일반적인 문제이며, AngularJS의 이러한 측면은 내 기능을 정의하기 위해 순수 jQuery를 사용하는 것보다 내 앱을 더 복잡하게 만든다. 어떤 컨트롤러 내에서 서비스/공장 등을 만들지 않고도 doSomething()으로 전화를 걸려면 어떻게해야합니까? 그것은 마치 모든 것이 불필요하게 복잡 해지는 것처럼 보입니다.

답변

2

짧은 답변 : 당신이 원하는 서비스/공장/...

일반적으로, 당신은 자신 당신이를 만들어야합니다 서명의 다른 컨트롤러에서 컨트롤러 함수를 호출하고자 찾을 때 서비스. 그렇게하면 코드가 깨끗해질 것입니다. 서비스를 사용하면 코드를 읽는 모든 사람이 그 서비스가 필요한 모든 컨트롤러에서 필요하다는 것을 분명히 알 수 있습니다.

그런 말은 다음과 같습니다 : Can one controller call another? (특히 당신이 좋아할 수도 있습니다 : http://egghead.io/lessons/angularjs-sharing-data-between-controllers)

0

컨트롤러가 서로 그런 식으로 액세스 할 수없는 이유가 있습니다. 그것은 단지 일종의 분리입니다. 다른 언어로 모든 변수를 전역으로 선언하지 않는 동일한 이유. 나는 그것이 나쁜 생각, 그리고 당신이 서비스를 배워야한다고 생각

<body ng-controller="myCtrl"> 

</body> 

그러나 : 당신이 그렇게하고 싶다면

, 당신은 다음, 전체 응용 프로그램에 대한 1 큰 컨트롤러가 그런 식으로 선언한다 , 공장, ...

관련 문제