Programing

angularjs의 다른 컨트롤러에서 함수를 호출하는 방법은 무엇입니까?

crosscheck 2021. 1. 5. 08:30
반응형

angularjs의 다른 컨트롤러에서 함수를 호출하는 방법은 무엇입니까?


각도 js의 다른 컨트롤러에서 함수를 호출해야합니다. 어떻게 가능한지 미리 감사드립니다.

코드 :

app.controller('One', ['$scope',
    function($scope) {
        $scope.parentmethod = function() {
            // task
        }
    }
]);
app.controller('two', ['$scope',
    function($scope) {
        $scope.childmethod = function() {
            // Here i want to call parentmethod of One controller
        }
    }
]);

컨트롤러 간의 통신은 $emit+ $on/ $broadcast+ $on방법을 통해 이루어집니다 .

따라서 귀하의 경우 Controller "Two"내에서 Controller "One"의 메서드를 호출하려는 경우 올바른 방법은 다음과 같습니다.

app.controller('One', ['$scope', '$rootScope'
    function($scope) {
        $rootScope.$on("CallParentMethod", function(){
           $scope.parentmethod();
        });

        $scope.parentmethod = function() {
            // task
        }
    }
]);
app.controller('two', ['$scope', '$rootScope'
    function($scope) {
        $scope.childmethod = function() {
            $rootScope.$emit("CallParentMethod", {});
        }
    }
]);

$rootScope.$emit가 호출 되는 동안 모든 데이터를 두 번째 매개 변수로 보낼 수 있습니다.


한 컨트롤러에서 다른 컨트롤러로 기능을 사용하지 않을 것입니다. 더 나은 접근 방식은 공통 기능을 서비스로 이동 한 다음 두 컨트롤러 모두에 서비스를 삽입하는 것입니다.


경우 two컨트롤러되고 중첩One컨트롤러.
그런 다음 간단히 호출 할 수 있습니다.

$scope.parentmethod();  

것이다 각도 검색 을위한 parentmethod기능은 현재 범위에서 시작하여 위로는 도달 할 때까지 rootScope.


이벤트를 사용하여 데이터를 제공 할 수 있습니다. 다음과 같은 코드 :

app.controller('One', ['$scope', function ($scope) {
         $scope.parentmethod=function(){
                 $scope.$emit('one', res);// res - your data
         }
    }]);
    app.controller('two', ['$scope', function ($scope) {
         $scope.$on('updateMiniBasket', function (event, data) {
                ...
         });             
    }]);

두 컨트롤러간에 통신하는 가장 좋은 방법은 이벤트를 사용하는 것입니다.

범위 문서 참조

이에서 체크 아웃 $on, $broadcast하고 $emit.


자식 컨트롤러 내에서 부모 컨트롤러의 parentmethod 함수를 실행하려면 다음을 호출하십시오.

$scope.$parent.parentmethod();

You can try it over here

ReferenceURL : https://stackoverflow.com/questions/29467339/how-to-call-a-function-from-another-controller-in-angularjs

반응형