2014-09-11 6 views
0

저는 각도가 너무 새롭고 제 동료의 버그를 수정해야합니다. 기능이있는이 공장을 찾았습니다. 모든 모듈의 재설정 기능을 호출하는 reset_All 함수를 어떻게 삽입 할 수 있습니까? MyCollection 의존에각도 JS - 모듈의 함수를 호출하는 방법?

.factory('MyCollection', function() { 
    return { 

     resetAll: function(projectId) { 

      // call the reset-function of SomeController 

     } 
    } 
}) 



.controller('SomeController', function($scope, a) { 


    $scope.reset = function() { 
     ........... 
    } 

} 

답변

2

당신이 다른 모듈의 밀접한 결합을 방지하려면, 이벤트를 브로드 캐스트 할 수와 각각의 컨트롤러에서 그것을 잡을 : 각도의 이벤트에 대한 자세한 내용은

.factory('MyCollection', ['$rootScope', function($rootScope) { 
    return { 
     resetAll: function(projectId) { 
      $rootScope.$broadcast('reset'); 
     } 
    }; 
}]); 

.controller('SomeController', ['$scope', 'a', function($scope, a) { 
    $scope.reset = function() { 
     // do something here 
    }; 

    $scope.$on('reset', function() { 
     $scope.reset(); 
    }); 
}]); 

Understanding Angular’s $scope and $rootScope event system $emit, $broadcast and $on

+0

감사합니다, 당신은 저를 많이 도왔습니다! – user2952265

2

당신이 필요합니다, 그래서 당신은 그것을 주입 할 수

다음
.controller('SomeController', [ '$scope', 'a', 'MyCollection', 
    function ($scope, a, MyCollection) { 


    $scope.reset = function(id) { 
     MyCollection.resetAll(id) 
    } 

}]); 

가 읽을 수있는 documentation입니다.

+0

Downvote를 보라 이유 : 질문에 답하지 않고 MyCollection에서 $ scope.reset을 호출하려고합니다. 다른 방법은 아닙니다. –

+0

@ RickardStaaf 감사합니다. –

+0

"그 사람"이 아니지만 귀하의 수정 실제로 더 악화, 컨트롤러를 삽입 할 수 없습니다 'MyCollection'실제로 공장입니다. Dennis Traubs 솔루션은 질문에 대한 답변을하는 것처럼 보입니다. –

관련 문제