如何在单击角度js上触发多个Click事件

时间:2016-05-03 09:53:58

标签: angularjs

我有不同的ng-clicks事件,我想要点击按钮立即触发所有这些事件

实施例

 <div ng-controller="one">
   <input type="button" id="one" ng-click="firstBtnClick(a,b)" class="fstClass"/>
 </div>
 <div ng-controller="two">
   <input type="button" id="two" ng-click="SecBtnClick(c,d)" class="SecClass"/>
 </div>
 <div ng-controller="three">
   <input type="button" id="three" ng-click="ThirdBtnClick(e,f)" class="ThirdClass"/>
 </div>

现在我想点击其他按钮上的所有点击功能

<div ng-controller="final">
 <input type="button" id="final" ng-click="finalBtnClick" class="FinalClass"/>
</div>

最终控制器代码

$timeout(function () {
 angular.element('.fstClass', '.SecClass').triggerHandler('click');
}, 0);

但我无法实现,有任何建议吗?

2 个答案:

答案 0 :(得分:0)

如果这些功能在同一个控制器中,你可以像这样链接在一起:

<input type="button" id="final" ng-click="firstBtnClick+SecBtnClick+ThirdBtnClick" class="FinalClass"/>

对于跨控制器的通信,您可以为每个控制器创建并注入共享服务,嵌套控制器,使用$ rootscope或使用$ emit:

function FirstController($scope) 
{
  $scope.$on('clickFirst', function(event, args) {
       firstBtnClick(args)//click first button
   });
  // another controller or even directive
}

function FinalController($scope) 
{
  $scope.$emit('clickFirst', args);
}

答案 1 :(得分:0)

为什么要在视图中执行此操作?您每按一次按钮就会调用控制器功能。

  

所以只需要一个ng-click="everyClick()"并在此控制器内   功能,调用你想要调用的每个函数。

所以:

$scope.finalBtnClick = function() {
 $scope.firstBtnClick();
 $scope.SecBtnClick();
 $scope.ThirdBtnClick();
}