href 및 ng-click 속성이 모두 정의 된 경우 :
<a href="#" ng-click="logout()">Sign out</a>
href
속성은 ng를 클릭보다 우선합니다.
ng-click의 우선 순위를 높이는 방법을 찾고 있습니다.
href
Twitter Bootstrap에 필요하지만 제거 할 수 없습니다.
href 및 ng-click 속성이 모두 정의 된 경우 :
<a href="#" ng-click="logout()">Sign out</a>
href
속성은 ng를 클릭보다 우선합니다.
ng-click의 우선 순위를 높이는 방법을 찾고 있습니다.
href
Twitter Bootstrap에 필요하지만 제거 할 수 없습니다.
답변:
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>
너무 잘 서비스를 제공합니다
템플릿에서 직접 클릭 이벤트의 기본 동작을 방지 할 수 있습니다.
<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>
작업 솔루션에 대한 duckeggs의 의견 에 감사드립니다 !
여기에이 질문에 대한 답이 너무 많지만 실제로 여기서 무슨 일이 벌어지고 있는지에 대해 약간의 혼란이있는 것 같습니다.
첫째, 전제
"href가 Angular.js의 ng-click보다 우선합니다."
잘못되었습니다. 실제로 발생하는 것은 클릭 후 클릭 이벤트가 먼저 angular ( ng-click
각 1.x 및 click
angular 2.x +의 지시문에 의해 정의 됨)에 의해 처리 된 다음 계속 전파 (결국 브라우저가 href
속성으로 정의 된 URL ). (See this ) 자바 스크립트에서 이벤트 전파에 대해 더 많은 것을 위해
이를 방지하려면 The Event 인터페이스의 preventDefault()
메소드를 사용하여 이벤트 전파를 취소해야합니다 .
<a href="#" ng-click="$event.preventDefault();logout()" />
(이것은 순수한 자바 스크립트 기능이며 각도와 관련이 없습니다)
이제 이것은 이미 문제를 해결할 것이지만 최적의 솔루션은 아닙니다. Angular는 정당하게 MVC 패턴을 촉진합니다 . 이 솔루션을 사용하면 html 템플릿이 javascript 로직과 혼합됩니다. 가능한 한 이것을 피하고 로직을 각도 컨트롤러에 넣어야합니다. 그래서 더 나은 방법은
<a href="#" ng-click="logout($event)" />
그리고 logout () 메서드에서 :
logout($event) {
$event.preventDefault();
...
}
이제 클릭 이벤트가 브라우저에 도달하지 않으므로에서 가리키는 링크를로드하지 않습니다 href
. (그러나 사용자가 링크를 마우스 오른쪽 버튼으로 클릭하고 링크를 직접 열면 클릭 이벤트가 전혀 발생하지 않습니다. 대신에 해당 링크가 가리키는 URL을 직접로드합니다.href
속성이 합니다.)
브라우저에서 방문한 링크 색상에 대한 의견에 대해. 다시 말하지만 이것은 각도와 관련이 없습니다. 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>
로그 아웃 기능 내부에서 리디렉션을 시도 했습니까? 예를 들어, 로그 아웃 기능은 다음과 같습니다.
$scope.logout = function()
{
$scope.userSession = undefined;
window.location = "http://www.yoursite.com/#"
}
그럼 당신은 그냥 가질 수 있습니다
<a ng-click="logout()">Sign out</a>
이것은 나를 위해 작동합니다
<a href (click)="logout()">
<i class="icon-power-off"></i>
Logout
</a>