簡體   English   中英

Angular js ng-click不會觸發超鏈接

[英]Angular js ng-click not firing for hyperlink

我想學習Angular。 我創建了一個簡單的視圖如下:

<!DOCTYPE html>
<html ng-app="MyApp">

  <head>
   <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="MyCtrl">
   <div>
     <table ng-repeat="d in Details">
       <tr>
         <td>{{d.Name}}</td>
         <td>{{d.Salary}}</td>
         <td><a href="#" ng-click="ShowDetail(d)">Select</a></td>
       </tr>
     </table>
   </div>

  </body>

</html>

控制器:的script.js

// Code goes here

    var MyModule=angular.module("MyApp",[]);

    var MyCtrl=function($scope){

      var Details=[
        {Name:'XXXX',Salary:40000},
        {Name:'YYYY',Salary:50000},
        {Name:'ZZZZ',Salary:60000},
        {Name:'AAAA',Salary:70000}
        ];

      $scope.Details=Details;

      var ShowDetail=function(detail){
        alert("You selected "+detail.Name+"Salary is "+detail.Salary);
      };
    }
MyModule.controller("MyCtrl",MyCtrl);

問題是,當我點擊超鏈接'選擇'超鏈接時,我沒有看到任何事件觸發。 請幫忙。

在Angular中,您的控制器處理與視圖的交互。 因此,視圖中的任何事件都由相應的控制器處理。

視圖和控制器通過$scope緊密耦合。 因此,必須在$scope上公開任何變量,對象或事件處理程序,以便在視圖中訪問它們。

因為你正在調用,所以在你的控制器中定義的showDetail仍然是一個普通的JS函數,而不是在Angular的上下文中。 要在視圖中使用相同的內容,您需要通過$scope公開它。

因此,您的函數應聲明如下,

 $scope.showDetail = function() {
   // your logic goes here
  }

而不是var ShowDetail ,嘗試使用$scope.ShowDetail

正如Amar所​​提到的,使用$scope.ShowDetail代替var並在函數內添加event.preventDefault()以確保href不會觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM