Javascript 防止链接的默认行为

Javascript 防止链接的默认行为,javascript,angularjs,Javascript,Angularjs,如何防止链接自动将我带到下一页?基本上,我有一个链接列表,但是首先,我想在链接被跟踪之前执行一个检查 例如 <tr ng-repeat= "match in matches"> <td> <a href= {{match.link}} ng-click= "check_link(match.link)"> Click me </a> </td> </tr> 我不知道的是“check_li

如何防止链接自动将我带到下一页?基本上,我有一个链接列表,但是首先,我想在链接被跟踪之前执行一个检查

例如

<tr ng-repeat= "match in matches">
    <td>
        <a href= {{match.link}} ng-click= "check_link(match.link)"> Click me </a>
    </td>
</tr>


我不知道的是“check_link”中的javascript代码,如果检查失败,它将阻止用户跟踪链接。

您的角度函数应该同时考虑匹配和位置重定向。使用按钮标记而不是锚定可以消除自动链接跟踪问题

<a href="{{match.link}}" ng-click="check_link(match.link, $event)">Click me</a>
<tr ng-repeat= "match in matches">
    <td>
        <button type='button' ng-click= "check_link(match.link)"> Click me </button>
    </td>
</tr>

如果你想让它看起来像一个链接,考虑使用它并给它一类“BTN BTN Link”。

< P>个人,我会在你的应用程序中创建一个指令,它可以很容易地允许你阻止链接的默认行为。这允许您在希望阻止链接正常运行的任何时候重复使用此代码

示例:单击时,此链接应该只调用方法sayHello()。它不会链接到google.com

<a href="http://google.com" ng-click="sayHello()" stop-link>Say Hello</a>
此处提供了完整的工作示例:

这样,您可以在sayHello()中执行任何必要的检查,然后根据需要使用
$location
重定向用户。您可能希望使用
$location.path('/blah')
$location.url('http://google.com)
更改页面


此处的完整$location文档:

不,不是复制品。这与使用Angular的正确方法有关。这是一个很好的答案,但你应该补充一点,你需要在控制器/指令中注入
$location
,以确保完整性。真的,伙计,我是说,来吧!
$scope.check_link = function(whatToCheck){
    if(checksOut){
        $location.path(whatToCheck);
    }
};
<a href="http://google.com" ng-click="sayHello()" stop-link>Say Hello</a>
.directive('stopLink', function() {
  return {
    restrict: "A",
    link: function($scope, ele, attrs) {
      ele.click(function(e){
        e.preventDefault();
      });
    }
  }
});