href重写ng-click在Angular.js中

当同时定义href和ng-click属性时:

<a href="#" ng-click="logout()">Sign out</a> 

href属性优先于ng-click。

我正在寻找一种方法来提高ng-click的优先级。

Twitter Bootstrap需要href ,我无法删除它。

如果你不需要uri,你应该只需要使用一个button标签。

这个来自angular度文档站点的例子只是做了href ,甚至没有把它分配给一个空string:

 [<a href ng-click="colors.splice($index, 1)">X</a>] 

http://docs.angularjs.org/api/ng.directive:select

这是另一个解决scheme:

 <a href="" ng-click="logout()">Sign out</a> 

即只要删除#从HREF属性

您可以直接在模板中直接阻止click事件的默认行为。

 <a href="#" ng-click="$event.preventDefault();logout()" /> 

根据angular度文件 ,

像ngClick和ngFocus这样的指令在该expression式的范围内公开一个$ event对象。

只是一个提示。 如果您需要真正的URL(以支持浏览器可访问性),您可以执行以下操作:

模板:

 <a ng-href="{{link}}" ng-click="$event.preventDefault(); linkClicked(link)">{{link}}</a> 

指示:

 $scope.linkClicked = function(link){ // your code here $location.path(link); }; 

通过这种方式,linkClicked()中的代码在导航到链接之前将有机会执行

在Angular中, <a>是指令 。 因此,如果你有一个空href或没有href ,Angular会调用event.preventDefault

来源 :

  element.on('click', function(event){ // if we have no href url, then don't navigate anywhere. if (!element.attr(href)) { event.preventDefault(); } }); 

这是一个演示缺less的href场景的plnkr 。

这在IE 9和AngularJS v1.0.7中适用于我:

 <a href="javascript:void(0)" ng-click="logout()">Logout</a> 

感谢duckeggs对工作解决scheme的评论 !

只要在href之前写入ng-click就可以了

 <!DOCTYPE html> <html> <head> <script data-require="angular.js@1.5.0" data-semver="1.5.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script> <script> angular.module("module",[]) .controller("controller",function($scope){ $scope.func =function(){ console.log("d"); } })</script> </head> <body ng-app="module" ng-controller="controller"> <h1>Hello ..</h1> <a ng-click="func()" href="someplace.html">Take me there</a> </body> </html> 

我不认为你需要从href中删除“#”。 以下与Angularjs 1.2.10合作

 <a href="#/" ng-click="logout()">Logout</a> 

我会为您添加一个适用于我的示例,您可以根据需要更改它。

我在控制器中添加波纹pipe代码。

  $scope.showNumberFct = function(){ alert("Work!!!!"); } 

并为我的查看页面添加波纹pipe代码。

 <a href="" ng-model="showNumber" ng-click="showNumberFct()" ng-init="showNumber = false" >Click Me!!!</a> 

你有没有尝试在注销function本身redirect? 例如,说你的注销function如下

 $scope.logout = function() { $scope.userSession = undefined; window.location = "http://www.yoursite.com/#" } 

那么你可以拥有

 <a ng-click="logout()">Sign out</a> 

请检查这个

 <a href="#" ng-click="logout(event)">Logout</a> $scope.logout = function(event) { event.preventDefault(); alert("working.."); } 
 //for dynamic elements - if you want it in ng-repeat do below code angular.forEach($scope.data, function(value, key) { //add new value to object value.new_url = "your url"; }); <div ng-repeat="row in data"><a ng-href="{{ row.url_content }}"></a></div>