我知道有很多关于用另一个覆盖href或ng-click的问题,但我的问题是不同的。 我有一些像这样的HTML代码:
<tr ng-click="doSomething()">
<complicated html>
<a href="http://somelink">blablabla</a>
</complicated html>
</tr>
如果可能,我想要的是:当用户点击链接时,不会触发ng-click,用户只会转到该链接。
有可能吗?有关stackoverflow的其他问题询问有关同一标签中的ng-click和href,但事实并非如此。
谢谢!
答案 0 :(得分:3)
我不确定你的doSomething()
功能是什么,即。你在那里做什么,但这可能是你的解决方案。
$scope.doSomething = function(event) {
if (event.target.nodeName === 'A' || event.target.tagName === 'A') {
console.log('target was <a>');
} else {
console.log('target was not <a> - do something');
}
};
HTML:
<table>
<tr ng-click="doSomething($event)">
<td><a href="http://google.com" target="_blank">blablabla</a></td>
</tr>
</table>
因此,您检查点击的元素是否是锚链接,并根据该链接执行操作。显然,你可以在很多不同的情况下使用它。
修改强>
您可以阅读有关tagname vs nodename的信息并决定如何执行此操作。
答案 1 :(得分:2)
thepio
的解决方案有效。但是,如果您不想更改doSomething
功能,可以采用其他方式:
<tr ng-click="doSomething()">
<complicated html>
<a href="" ng-click="navigateToSomeLink($event)">blablabla</a>
</complicated html>
</tr>
在控制器中,添加另一个函数navigateToSomeLink()
$scope.navigateToSomeLink = function($event) {
$event.stopPropagation();
$window.open('http://somelink', '_blank');
}