angularjs 在angular js 1中从一个控制器调用另一个控制器方法

34gzjxbg  于 2022-11-21  发布在  Angular
关注(0)|答案(1)|浏览(232)

我想从PaymentAccessController调用ToolsController的closeTools(),但是无法调用,详细信息添加到子控制器中,请参考子控制器方法onCancel()。
//父控制器

(function(){

angular.module('ssuiTools').controller('ToolsController',ToolsController);
ToolsController.$inject=['$scope'];

function ToolsController($scope){
var vmTool = this;
vmTool.closeTools = closeTools;
init();

function init(){
-
-
}

function closeTools(){
$scope.toolsList = [];
$scope.showToolsContainer = false;
$scope.isMaximised = true;
$scope.isZoomedOut = false;
}
}
})();

//子控制器

(function(){

angular.module('ssuiTools').controller('PaymentAccessController',PaymentAccessController);

PaymentAccessController.$inject=['httpService','$scope','$filter','$q'];

function PaymentAccessController(httpService, $scope, $filter, $q){
var vmPat =this;
vmPat.onCancel =onCancel;
init();

function init(){
-
-
-
}

function onCancel(){
//here i want to call closeTools() of parent controller - ToolsController
ToolsController.closeTools();  //tried different ways but didn't work
}
};
})();
ar5n3qh5

ar5n3qh51#

在工具控制器中

(function(){

    angular.module('ssuiTools').controller('ToolsController',ToolsController);
    ToolsController.$inject=['$scope'];

    function ToolsController($scope){
        var vmTool = this;
        vmTool.closeTools = closeTools;
        init();

        $scope.$on('on-cancel-called', function (event,data) { //Catch on-cancel-called event
            closeTools();
        });

        function init(){

        }

        function closeTools(){
            $scope.toolsList = [];
            $scope.showToolsContainer = false;
            $scope.isMaximised = true;
            $scope.isZoomedOut = false;
        }
    }
})();

而在子控制器内部

(function(){

    angular.module('ssuiTools').controller('PaymentAccessController',PaymentAccessController);

    PaymentAccessController.$inject=['httpService','$scope','$filter','$q'];

    function PaymentAccessController(httpService, $scope, $filter, $q){
        var vmPat =this;
        vmPat.onCancel =onCancel;
        init();

        function init(){

        }

        function onCancel(){
            $scope.$emit('on-cancel-called')
        }
    };
})();

要了解有关$on、$broadcast和$emit的更多信息,请参阅此link

相关问题