更新 :此后,我改变了主意。经过更多的开发和花时间进行此工作之后,我相信针对此问题的更好解决方案是执行以下操作:
<a ng-click="myFunction()">Click Here</a>
然后更新您
css的规则,使其具有附加规则:
a[ng-click]{ cursor: pointer;}它更加简单,并提供完全相同的功能,并且效率更高。希望对将来寻找该解决方案的其他人有所帮助。
以下是我以前的解决方案,仅出于遗留目的而留在这里:
如果您经常遇到此问题,则可以通过以下简单指令来解决此问题:
app.directive('a', function() { return { restrict: 'E', link: function(scope, elem, attrs) { if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){ elem.on('click', function(e){ e.preventDefault(); }); } } };});它检查所有锚标记(
<a></a>),以查看其
href属性是否为空字符串(
"")或哈希(
'#')或是否有
ng-click分配。如果发现这些条件中的任何一个,它将捕获事件并阻止默认行为。
唯一的缺点是它为所有锚标记运行此指令。因此,如果页面上有很多锚标记,而只想防止其中的少量锚标记的默认行为,则此指令的效率不是很高。但是,我几乎总是想要
preventDefault,因此我在AngularJS应用程序中全部使用了此指令。



