2013-08-17 33 views
5

Vì vậy, tôi có một tập dữ liệu của các công ty được lưu trữ trong một biến trong bộ điều khiển.AngularJS ng-repeat lọc với câu lệnh OR

$scope.companies = [ 
    { 
     name: "first company", 
     type: ["a", "b"] 
    }, 
    { 
     name: "second company", 
     type: ["b"] 
    }, 
    { 
     name: "third company", 
     type: ["c"] 
    } 
] 

Sau đó tôi có danh sách nơi tôi muốn liệt kê tất cả các công ty của a hoặc b. Tôi nghĩ việc gửi và mảng sẽ hoạt động như một câu lệnh. Hóa ra nó giống như một tuyên bố.

<ul> 
    <li ng-repeat="company in companies | filter:filters{type: ['a', 'b']}"> 
     {{company.name}} 
    </li> 
</ul> 

Mã trên sẽ liệt kê "công ty đầu tiên" trong khi tôi muốn liệt kê cả "công ty đầu tiên" và "công ty thứ hai". Tôi biết tôi có thể thao tác các tập dữ liệu $ scope.companies từ bên trong bộ điều khiển, nhưng tôi muốn biết nếu có bất kỳ "bản địa" cách để đạt được điều này đầu tiên.

Trân trọng! // Richard

Trả lời

11

lựa chọn duy nhất của bạn là sử dụng một bộ lọc bằng cách sử dụng chức năng:

<ul> 
    <li ng-repeat="company in companies | filter:customFunction"> 
     {{company.name}} 
    </li> 
</ul> 

đâu

$scope.customFunction = function(item){ /* true if you want item, false if not */ } 

Nguồn: http://docs.angularjs.org/api/ng.filter:filter#parameters

+0

Cảm ơn! Thanh lịch hơn nhiều so với hoán vị của tập dữ liệu. Cũng cảm ơn cho nguồn! –

+0

Cảm ơn! @RichardLilja tại sao bạn không xác nhận câu trả lời này như là giải pháp cho câu hỏi của bạn? Nó làm cho nó xếp hạng cao hơn trong công cụ tìm kiếm cho các tìm kiếm phù hợp với vấn đề của bạn, sẽ giúp tôi tìm ra giải pháp thanh lịch này trước khi lãng phí thời gian tạo bộ lọc tùy chỉnh –