我在 Angular 中遇到了一种情况,我感觉自己做错了,但我找不到 Angular 的方法来解决它。
我正在开发一个移动应用程序。我想创建一个指令,让我们称之为cc-tap-highlight
将与 ng-click 一起使用的指令。这意味着我可以像这样使用它:
<a ng-click="doSomething()" cc-tap-highlight>Click me</a>
这将做的是向单击的元素添加一个类,并在几秒钟后将其删除。
现在可以说,让我们手动绑定到click
指令中的元素事件。这适用于桌面应用程序。然而,在移动设备Angular
上,我们可以快速点击/点击很多魔法:
https://github.com/angular/angular.js/blob/master/src/ngMobile/directive/ngClick.js
当然,我不想重新实现它的所有魔法!
所以,目前,我没有使用我的cc-tap-highlight
指令,而是使用这种相当老套的方法:
在视图中
<a ng-click="doSomething($event)" cc-tap-highlight>Click me</a>
在控制器中:
$scope.doSomething = function($event){
//do your things with $event.currentTarget
}
这种方法有两个主要问题:
控制器不应操纵 DOM
我们需要在整个违反 DRY 的代码库中一遍又一遍地重复这种模式
但是,我一生都无法弄清楚如何编写一个挂钩到ng-click
处理程序并完成它的事情的指令。