当两个,href和NG-点击属性的定义:
<a href="#" ng-click="logout()">Sign out</a>
在href
属性优先NG-点击。
我在寻找一种方式,以提高NG-点击的优先级。
href
需要Twitter的引导,我无法将其删除。
当两个,href和NG-点击属性的定义:
<a href="#" ng-click="logout()">Sign out</a>
在href
属性优先NG-点击。
我在寻找一种方式,以提高NG-点击的优先级。
href
需要Twitter的引导,我无法将其删除。
你应该只使用一个按钮标签,如果你并不需要一个URI。
从角文档站点这个例子只是做href
甚至不需要将它赋值为空字符串:
[<a href ng-click="colors.splice($index, 1)">X</a>]
http://docs.angularjs.org/api/ng.directive:select
你可以简单地阻止点击事件的默认行为直接在您的模板。
<a href="#" ng-click="$event.preventDefault();logout()" />
每角文档 ,
像ngClick和ngFocus指令,它们表达的范围内露出$事件对象。
这里是另一种解决方案:
<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(代码),将有机会浏览到链接之前执行
在角, <a>
s为指令 。 因此,如果你有一个空的href
或没有href
,角会调用event.preventDefault
。
从来源 :
element.on('click', function(event){
// if we have no href url, then don't navigate anywhere.
if (!element.attr(href)) {
event.preventDefault();
}
});
这里有一个plnkr证明丢失的href
场景。
这在IE 9和AngularJS v1.0.7为我工作:
<a href="javascript:void(0)" ng-click="logout()">Logout</a>
由于duckeggs'评论对工作的解决方案!
有这里这个问题,这么多的答案,但它似乎是有什么实际发生在这里的混乱情况。
首先,你的前提
“HREF覆盖纳克单击Angular.js”
是错的。 什么是实际发生的情况是,你点击后,点击事件首先被处理的角度(由定义ng-click
在角1.x的指令,并click
在角2.X +),然后将其继续传播(最终触发浏览器导航到与定义的URL href
属性)。(参见此对于更多关于在JavaScript事件传播)
如果你想避免这种情况,那么你应该使用取消事件传播事件接口的preventDefault()
方法 :
<a href="#" ng-click="$event.preventDefault();logout()" />
(这是纯JavaScript功能和无关的角)
现在,这已经将解决您的问题,但这不是最佳的解决方案。 角,理所当然地,促进了MVC模式 。 有了这个解决方案,您的HTML模板是使用JavaScript逻辑混合。 你应该尽量避免这种情况,尽可能把你的逻辑到您的角度控制器。 因此,一个更好的方式是
<a href="#" ng-click="logout($event)" />
而在你的注销()方法:
logout($event) {
$event.preventDefault();
...
}
现在,点击事件不会到达浏览器,所以它不会尝试加载由指向该链接href
。 (但是请注意,如果用户右键点击链接并直接打开该链接,那么将不会在所有的click事件。相反,它会直接载入由指向的URL href
属性。)
对于有关在浏览器中访问过的链接颜色的评论。 同样,这有没有关系的角度,如果你的href="..."
指向您的浏览器默认情况下,访问过的URL链接的颜色会有所不同。 这是通过控制CSS:访问选择 ,你可以修改你的CSS来覆盖此行为:
a {
color:pink;
}
PS1:
一些答案建议使用:
<a href .../>
href
是角指令。 当你的模板由角处理,这将被转换为
<a href="" .../>
这两种方式都基本相同。
只要写NG单击之前的href ..它为我工作
<!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>
你也可以试试这个:
<div ng-init="myVar = 'www.thesoftdesign'">
<h1>Tutorials</h1>
<p>Go to <a ng-href="{{myVar}}">{{myVar}}</a> to learn!</p>
</div>
我会添加你为我工作的一个例子,只要你想,你可以改变它。
我添加了娄代码我的控制器内。
$scope.showNumberFct = function(){
alert("Work!!!!");
}
和我的视图页面我添加了娄代码。
<a href="" ng-model="showNumber" ng-click="showNumberFct()" ng-init="showNumber = false" >Click Me!!!</a>
你尝试注销功能本身内部重定向? 例如,假设你的注销功能如下
$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>