2013-09-27 270 views
7

Tôi có một người có tên và một trang chủ tùy chọn. Làm thế nào để tùy chọn bọc tên của họ trong một thẻ neo?Trong AngularJS, làm cách nào để tùy chọn bọc mục trong một liên kết

<ul ng-repeat='person in people'> 
    <li> 
    <a href="{{person.website}}"> 
     {{person.name}} 
    </a> 
    </li> 
</ul> 

hoặc trong trường hợp person.website là con số không

<ul ng-repeat='person in people'> 
    <li> 
    {{person.name}} 
    </li> 
</ul> 

Trong ray Tôi sẽ sử dụng phương pháp <%= link_to_unless person.website.blank?, seller.name, seller.website %>

Làm thế nào để làm điều này trong AngularJS?

Trả lời

4

Bạn có thể thêm các chức năng sau đây để phạm vi của bạn:

$scope.linkToUnless = function(condition, label, href) { 
    return condition ? '<a href="'+href'+">'+label+'</a>' : label; 
}; 

hoặc bạn có thể làm lại HTML của bạn để một cái gì đó như:

<ul ng-repeat='person in people'> 
    <li> 
    <a href="{{person.website}}" ng-if="person.website"> 
     {{person.name}} 
    </a> 
    <span ng-if="!person.website"> 
     {{person.name}} 
    </span> 
    </li> 
</ul> 

(chỉ là ghi chú lấy cảm hứng từ bình luận OP của, ng-if là chỉ có sẵn từ phiên bản 1.1.5; đối với các phiên bản cũ hơn, hãy sử dụng ng-showng-hide thay vì

hoặc bạn có thể viết chỉ thị tùy chỉnh và sử dụng chỉ thị tùy chỉnh như sau:

<link-to-if href="person.website" label="person.name" /> 
+0

Cảm ơn bạn về ba khả năng. Là một người mới làm quen góc, tôi không chắc chắn nên chọn ai. – zhon

+0

Tôi sẽ chuyển sang phần thứ hai vì nó nhanh chóng, dễ dàng và vẫn cung cấp cho bạn tùy chọn để dễ dàng sử dụng nhiều chỉ thị góc hơn trong HTML – adamziel

+0

Đừng ngần ngại chấp nhận câu trả lời này nếu câu trả lời cho câu hỏi của bạn :) – adamziel