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>]
这是另一个解决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>