我有不同的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);
但我无法实现,有任何建议吗?
答案 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();
}