programing

href는 Angular.js에서 ng-click을 덮어씁니다.

golfzon 2023. 3. 15. 20:05
반응형

href는 Angular.js에서 ng-click을 덮어씁니다.

href 아트리뷰트와 ng-click 아트리뷰트가 모두 정의되어 있는 경우:

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

href클릭하다

ng-click의 우선순위를 높일 방법을 찾고 있습니다.

href트위터 부트스트랩

의 이 예는 .href조차 하지 : 자자문 without without without without without without without without without without without without without without without without without without without without without.

[<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 등의 지시어는 해당 식 범위 내의 $event 객체를 표시합니다.

다음은 다른 해결 방법입니다.

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

즉, href 속성에서 #를 삭제하기만 하면 됩니다.

uri가 필요 없다면 버튼 태그를 사용하는 것이 좋습니다.

힌트 하나만 더 주세요.(브라우저 액세스를 지원하기 위해) 실제 URL이 필요한 경우 다음을 수행할 수 있습니다.

템플릿:

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

지시:

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

이와 같이 linkClicked() 내의 코드를 실행한 후 링크로 이동합니다.

각도에서 s는 지시어입니다.따라서 빈칸이 있는 경우href no (없음)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();
      }
    });

여기 실종사실을 보여주는 PLNKR이 있습니다.href시나리오입니다.

IE 9 및 Angular에서는 이 기능이 작동했습니다.JS v1.0.7:

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

실제 솔루션에 대한 듀케그스의 코멘트 덕분에!

이 질문에 대한 답변은 매우 많지만 실제 무슨 일이 일어나고 있는지에 대해서는 약간 혼란스러운 것 같습니다.

첫째, 당신의 전제는

"Href는 Angular.js의 ng-click을 덮어씁니다."

실제로 있는 각도로 정의)입니다.ng-clickangularx 및 " 1.x"의 click2.에 의해 는 angular 2.x+로 로 이동하도록 ).href속성)을 참조해 주세요.(javascript 이벤트 전파에 대한 자세한 내용은 여기를 참조하십시오.)

이를 회피하려면 이벤트인터페이스의 메서드를 사용하여 이벤트 전파를 취소해야 합니다.

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

(이것은 순수 자바스크립트 기능으로 각도와는 무관합니다)

이것으로 이미 문제가 해결되지만 최적의 해결책은 아닙니다.각도는 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>

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>

난 이거면 돼

<a href (click)="logout()">
   <i class="icon-power-off"></i>
   Logout
</a>
 <a href="#">
       <span ng-click="logout()"> Sign out </span>
 </a>

이렇게 했는데 잘 되더라고요.

언급URL : https://stackoverflow.com/questions/14939385/href-overrides-ng-click-in-angular-js

반응형