同时定义href属性和ng-click属性:
<a href="#" ng-click="logout()">Sign out</a>
该href
属性优先于ng-click。
我正在寻找一种提高ng-click优先级的方法。
href
是Twitter Bootstrap所必需的,我无法将其删除。
同时定义href属性和ng-click属性:
<a href="#" ng-click="logout()">Sign out</a>
该href
属性优先于ng-click。
我正在寻找一种提高ng-click优先级的方法。
href
是Twitter Bootstrap所必需的,我无法将其删除。
Answers:
如果不需要uri,则应该只使用按钮标签。
角度文档站点中的此示例href
甚至都没有将其分配给空字符串:
[<a href ng-click="colors.splice($index, 1)">X</a>]
href="#"
)导致页面重新加载,这也是错误的。
href=""
解决。
<a href="javscript:void(0)" ng-click="logout()">Sign out</a>
将竭诚为您服务也很好
您可以直接在模板中直接阻止click事件的默认行为。
<a href="#" ng-click="$event.preventDefault();logout()" />
根据角度文件,
ngClick和ngFocus等指令在该表达式的范围内公开了$ event对象。
这是另一种解决方案:
<a href="" ng-click="logout()">Sign out</a>
即只是从href属性中删除#
只是一个提示。如果您需要真实的URL(以支持浏览器可访问性),则可以执行以下操作:
模板:
<a ng-href="{{link}}" ng-click="$event.preventDefault(); linkClicked(link)">{{link}}</a>
指示:
$scope.linkClicked = function(link){
// your code here
$location.path(link);
};
这样,您在linkClicked()中的代码将有机会在导航到链接之前执行
这在IE 9和AngularJS v1.0.7中对我有用:
<a href="javascript:void(0)" ng-click="logout()">Logout</a>
这个问题的答案太多了,但是对于这里实际发生的事情似乎有些困惑。
首先,你的前提
“ href覆盖Angular.js中的ng-click”
是错的。实际发生的情况是,单击后,click事件首先由angular处理(由ng-click
angular 1.x和click
angular 2.x +中的指令定义),然后继续传播(最终触发浏览器导航到与定义URL href
)属性。(参见此对于更多关于在JavaScript事件传播)
如果要避免这种情况,则应该使用The Event接口的preventDefault()
方法来取消事件传播:
<a href="#" ng-click="$event.preventDefault();logout()" />
(这是纯JavaScript功能,与角度无关)
现在,这已经可以解决您的问题,但这不是最佳解决方案。Angular正确地推广了MVC模式。使用此解决方案,您的html模板与javascript逻辑混合在一起。您应尽量避免这种情况,并将逻辑放入角度控制器中。所以更好的方法是
<a href="#" ng-click="logout($event)" />
在您的logout()方法中:
logout($event) {
$event.preventDefault();
...
}
现在,click事件将不会到达浏览器,因此它将不会尝试加载指向的链接href
。(但是请注意,如果用户右键单击该链接并直接打开该链接,则根本不会发生click事件。相反,它将直接加载该href
属性所指向的url 。)
关于浏览器中访问链接颜色的注释。同样,这与角度无关,如果href="..."
默认情况下您的浏览器指向访问的URL的链接颜色将不同。这是由CSS:visited Selector控制的,您可以修改CSS以覆盖此行为:
a {
color:pink;
}
PS1:
建议使用以下答案:
<a href .../>
href
是一个角度指令。当您的模板按角度进行处理时,它将转换为
<a href="" .../>
这两种方式本质上是相同的。
只需在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>
我将为您添加一个适用于我的示例,您可以根据需要进行更改。
我将波纹管代码添加到控制器中。
$scope.showNumberFct = function(){
alert("Work!!!!");
}
在我的查看页面上,添加以下代码。
<a href="" ng-model="showNumber" ng-click="showNumberFct()" ng-init="showNumber = false" >Click Me!!!</a>
请检查一下
<a href="#" ng-click="logout(event)">Logout</a>
$scope.logout = function(event)
{
event.preventDefault();
alert("working..");
}
这对我有用
<a href (click)="logout()">
<i class="icon-power-off"></i>
Logout
</a>