一键调用2个不同控制器的2个功能

时间:2016-07-10 13:42:42

标签: angularjs

我有2个控制器说#content td.failed, .failed { color:#FF0000; Background-color:white; } cont_a分别有函数cont_bfun_a()。 我在fun_b()内有一个按钮,如果我点击它就应该调用这两个函数,我不知道从哪里开始。

谢谢。

1 个答案:

答案 0 :(得分: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();
   })
});

除此之外,问题太模糊,无法知道最佳方法是什么。通常使用服务是保持控制器代码精益的最佳方式