2017-12-15 30 views
0

나는 controller1에 정의 된 함수를 가지고 있으며 그것을 controller2에서 사용하고자합니다. 내가 $scope.functionName() 또는 $rootScope.functionName() 작업을 수행 할 때이 오류가없는 컨트롤러 2에서 예상대로 그것은 controller1에 절대적으로 잘 작동하지만컨트롤러 2의 컨트롤러 1에서 함수를 호출하려면 어떻게해야합니까? AngularJS

TypeError: $scope.functionName() is not a function

를 얻을. 필자는 기존 기능을 복사하여 컨트롤러 2에 붙여서 사용하고 싶지 않습니다. 다시 사용할 수 있어야합니다.

답변

0

서비스 또는 팩토리를 만들고 거기에 함수를 넣습니다. 그런 다음 두 컨트롤러가 두 컨트롤러에 모두 주입하여 서비스/팩토리를 사용하게하십시오.

0

btn 두 컨트롤러와 통신하기 위해 이벤트 ($ on, $ broadcast 및 $ emit)를 사용하십시오.

구문 :

$ 범위 $ 방송 ("myEvent가"데이터). $ scope. $ emit ("MyEvent", data);

$ scope. $ on ("MyEvent", function (evt, data) { // 여기 핸들러 코드}); 도움이 되길 바랍니다.

+0

controller2에서 언제든지 functionName()을 사용하고 싶다면 코드는 어떻게 생겼을까요? 나는 evt 데이터 레이아웃을 얻지 못했다. – hellomate

+0

app.controller ('하나'[ '범위 $', '$ rootScope' 함수 ($ 범위) {$ rootScope ("CallParentMethod"$에, 함수() {$ scope.parentmethod(). }); $ scope.parentmethod = function (// 작업 ) } ]); app.controller ('two', [ '$ scope', '$ rootScope' function ($ scope) { $ scope.childmethod = function() { $ rootScope. $ emit ("CallParentMethod", {}) ; } } ]); 하위 컨트롤러에 $ emit + $를 사용할 수 있습니다. 하위 컨트롤러에 $ 브로드 캐스트 + $로 --- 하위 컨트롤러에 대한 부모. –