2015-11-09 61 views
4

我有两个控制器在两个不同的模块,需要调用父控制器中的子控制器功能。已尝试$ rootScope,但它在这种情况下不起作用。父控制器调用子控制器功能

这里是孩子控制器功能代码:

$scope.processSignOut = function() { 
      LogoutService.save(
       function (response) { 
        $state.go('support.login'); 
       }, function (error) { 
        showAlert('danger', 
         'logout unsuccessfull. Please try again.'); 
       }); 
     }; 

父控制器

$rootScope.logout = function() { 
      $rootScope.processSignOut(); 
     }; 

HTML代码

<button type="button" class="btn btn-secondary btn-block" 
    ng-click="logout()">Logout 
</button> 
+0

发布你的父母控制器功能。 –

+0

$ rootScope.logout = function(){ processSignOut(); }; HTML代码: <按钮类型= “按钮” 类= “BTN BTN-二次BTN-块” 纳克单击= “登出()”>注销 –

+0

http://stackoverflow.com/questions/19038778/ angularjs - 如何对呼叫儿童范围功能,在父作用域 –

回答

1

这里介绍的解决方案: angularJS: How to call child scope function in parent scope

在你的情况:

function ParentCntl($scope) { 
    $scope.logout = function(){ 
     $scope.$broadcast ('processSignOut'); 
    } 
} 

function ChildCntl($scope) {    
    $scope.$on('processSignOut', function(e) { 
     $scope.processSignOut();   
    }); 

    $scope.processSignOut = function() { 
     LogoutService.save(
      function (response) { 
       $state.go('support.login'); 
      }, function (error) { 
       showAlert('danger', 
        'logout unsuccessfull. Please try again.'); 
      }); 
    }; 
}