【问题标题】:Call one controller method from another controller in angular js 1从角度js 1中的另一个控制器调用一个控制器方法
【发布时间】:2022-11-01 17:46:37
【问题描述】:

我想从 PaymentAccessController 调用 ToolsController 的 closeTools() 但无法这样做。 在子控制器中添加了详细信息。请参考子控制器方法 onCancel()。

//Parent Controller

(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;
}
}
})();

//Child Controller

(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
}
};
})();

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    在您的工具控制器中

    (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

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 2011-09-23
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多