2016-07-10 41 views
1

我有2个控制器,分别为cont_acont_b,它们分别具有功能fun_a()fun_b()。 我在cont_a内有一个按钮,如果我点击它,它应该调用这两个函数,并且我不知道从哪里开始。从一个点击呼叫2个不同控制器的功能

谢谢。

+0

关于这些功能的信息不够充分。请显示所有相关代码并更好地说明它们的作用 – charlietfl

+0

该函数仅在其中包含警报,且不包含任何复杂代码@charlietfl –

+0

两个控制器之间的范围关系是什么?另一个控制器是在父范围,子范围还是兄弟范围? – georgeawg

回答

2

两个选项,使用服务或使用角事件

服务方式

app.service('funcService', function(){ 
    this.fun_a = function(){ 
     alert('fun_a') 
    } 
    this.fun_b = function(){ 
     alert('fun_b') 
    } 

} 

app.controller('Ctrl_1' , function($scope,funcService){ 
    $scope.callBothFunctions = function(){ 
      funcService.fun_a(); 
      funcService.fun_b() 
    } 
}); 
app.controller('Ctrl_2' , function($scope,funcService){ 
    $scope.func_b = funcService.func_b; 
}); 

事件的方法

app.controller('Ctrl_1' , function($scope,$rootScope){ 
    $scope.fun_a = function(){ 
     alert('fun_a'); 
     $rootScope.$broadcast('call-fun_b'); 
    } 
}); 
app.controller('Ctrl_2' , function($scope){ 
    $scope.fun_b = function(){ 
     alert('fun_b') 
    } 
    $scope.$on('call-fun_b', function(){ 
     $scope.fun_b(); 
    }) 
}); 

除此之外,问题不明确,知道最好的方法是什么。通常使用服务是保持控制器代码精简的最佳方式。