我有5个按钮使用相同的ng-click功能。基本上每个按钮的操作类似于选项卡式导航,您可以在其中单击其中一个按钮,然后将其带到该选项卡的窗格。这些按钮中的每一个都可以重复,并且位于模板中。选项卡窗格也都在模板中,但在用户单击其中一个按钮并创建页面之前,它们都不是活动的。因此,基本上有多个点击功能嵌套在点击功能中,这些功能根据用户的激活情况做了不同的事情。
在jQuery中,我可以使用"这个"并选择被单击的对象,并轻松地对该对象进行所有操作;然而,它并没有出现在那里使用角度来做到这一点的方法。目前,当您单击其中一个按钮时,它对所有按钮执行相同的操作。我想我可以创建5个单独的函数,但出于可伸缩性的原因,我不想这样做。
总结一下:
是否有一种有效的方法来处理点击功能中的点击功能?
<nav class="block--menu">
<section class="content--menu" ng-controller="ActiveCtrl">
<div class="menu" >
<button class="menu__item" ng-click="showConfirm()"></button>
<button class="menu__item" ng-click="showConfirm()"></button>
<button class="menu__item" ng-click="showConfirm()"></button>
<button class="menu__item" ng-click="showConfirm()"></button>
<button class="menu__item" ng-click="showConfirm()"></button>
</div>
</section>
答案 0 :(得分:2)
您可以在角度事件check the documentation中使用$event
访问jQuery事件对象以获取详细信息,但如果您要将其发送到控制器,则很可能意味着您没有在angular way中执行此操作。
用法是
<button class="menu__item" ng-click="showConfirm($event)"></button>
并在控制器中
$scope.showConfirm = function($event){
//$event.target should be your link
};
答案 1 :(得分:1)
你应该停止以jQuery的方式思考,不要试图直接操纵DOM。在您的控制器中,您应该只操纵数据,然后在视图中反映这些数据。当您考虑Angular-way时,您的代码通常如下所示:
<强> HTML 强>
<section ng-controller="ActiveCtrl as ctrl">
<div class="menu" >
<button ng-repeat="button in ctrl.buttons track by $index"
ng-click="ctrl.showConfirm(button)"
ng-class="{'menu__item_active':button.active, 'menu__item':true}"
>{{button.name}}</button>
</div>
</section>
<强>的JavaScript 强>
angular.module('app',[]).
controller('ActiveCtrl', ['$window', function($window) {
this.buttons = [{
name: 'First'
}, {
name: 'Second'
}, {
name: 'Third'
}];
this.showConfirm = function(button) {
button.active = !button.active;
$window.alert(button.name);
}
}]);
<强> Plunker 强>