programing

AngularJS의 다른 컨트롤러에서 함수를 호출하려면 어떻게 해야 합니까?

mailnote 2023. 2. 25. 21:32
반응형

AngularJS의 다른 컨트롤러에서 함수를 호출하려면 어떻게 해야 합니까?

AngularJS의 다른 컨트롤러에 있는 함수를 호출해야 합니다.이거 어떻게 해?

코드:

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방법들.

따라서 컨트롤러 "2" 내의 컨트롤러 "1" 메서드를 호출하는 경우 올바른 방법은 다음과 같습니다.

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호출됩니다.두 번째 파라미터로 임의의 데이터를 전송할 수 있습니다.

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

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

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) {
                ...
         });             
    }]);

이 경우,two컨트롤러가 네스트되어 있다One컨트롤러입니다.
다음으로 전화를 걸 수 있습니다.

$scope.parentmethod();  

Angular는 다음을 검색합니다.parentmethod현재 스코프에서 시작하여 에 도달할 때까지 기능합니다.rootScope.

2개의 컨트롤러 간에 통신하는 최선의 방법은 이벤트를 사용하는 것입니다.

스코프의 메뉴얼을 참조해 주세요.

이 체크아웃에서는$on,$broadcast그리고.$emit.

자녀 컨트롤러 내에서 부모 컨트롤러의 부모 메서드 기능을 실행하는 경우 다음과 같이 호출합니다.

$scope.$parent.parentmethod();

이쪽에서 드셔보세요

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

반응형