2014-09-24 28 views
7
<a ng-attr-href="{{page==1 && 'javascript:void(0)' || '#a/'+tid+'/'+(page-1)}}">Prev</a> 

Tôi muốn nhận được rằng khi page = 1AngularJS liên kết không an toàn: javascript: void (0) khi giá trị là javascipt: void (0)

<a href="javascript:void(0)">Prev</a> 

Nhưng kết quả:

<a href="unsafe:javascript:void(0)">Prev</a> 
+1

kiểm tra giấy tờ $ SCE sau, '$ sce.trustAs ...' – maurycy

+0

Đây là một hành vi trường hợp góc thú vị bởi góc. Tuy nhiên, nếu bạn chỉ muốn vô hiệu hóa hành động trên thẻ 'a', thì bạn đã xem xét sử dụng' ng-if' và trả về 'undefined' nếu' page == 1'? –

+0

Tôi sẽ đi với ng-nếu điều này không thể được thực hiện theo cách này. –

Trả lời

2

Sử dụng ng-click trong <a>

<a href="" ng-click="go(tid)"> 

Và trong bộ điều khiển

app.controller('whatever', function($scope, $location){ 
    $scope.go = function(id){ 
     if($scope.page == 1) { 
      return; 
     } 
     var url = '/a/' + id + '/' + ($scope.page - 1); 
     $location.url(url); 
    } 
}); 

Bằng cách này, bạn cũng di chuyển logic ra khỏi mẫu.

+0

Tôi không muốn sử dụng bộ điều khiển vì tôi định sử dụng mẫu này với nhiều bộ điều khiển. Và tôi đang tìm cách để làm điều đó chỉ trong mẫu! –

+0

Sau đó, bạn có thể nghĩ về chỉ thị. Bằng cách này bạn có thể tái sử dụng nó ở nhiều nơi. Nhưng để có logic của bạn trong một mẫu không thực sự tốt. –

1

sử dụng ng-click trên một và vượt qua $ kiện đến chức năng của bạn.

<a href="#" ng-click="yourFunction($event);">Click</a> 

Trong chức năng của bạn làm

$scope.yourFunction = function(e) { 
     e.preventDefault(); 
}; 
Các vấn đề liên quan