Để lọc với nhiều thuộc tính sâu, chúng tôi cần tạo bộ lọc tùy chỉnh. Những gì tôi có nghĩa là chúng ta cần phải tạo ra chức năng riêng của chúng tôi để lọc dữ liệu trong đối tượng và trả về đối tượng yêu cầu (đối tượng được lọc).
Ví dụ tôi cần để lọc dữ liệu từ bên dưới đối tượng -
[
{
"document":{
"documentid":"1",
"documenttitle":"test 1",
"documentdescription":"abcdef"
}
},
{
"document":{
"documentid":"2",
"documenttitle":"dfjhkjhf",
"documentdescription":"dfhjshfjdhsj"
}
}
]
Trong HTML chúng tôi sử dụng ng-repeat để hiển thị danh sách tài liệu -
<div>
//search input textbox
<input ng-model="searchDocument" placeholder="Search">
</div>
<div ng-repeat="document in documentList | filter: filteredDocument">
//our html code
</div>
Trong điều khiển chúng tôi viết chức năng lọc trở lại đối tượng được lọc bằng cách sử dụng hai thuộc tính của đối tượng là "documenttitle" và "documentdescription", ví dụ mã như sau -
function filterDocuments(document)
{
if($scope.searchDocument)
{
if(document.documentTitle.toLowerCase().indexOf($scope.searchDocument.toLowerCase()) !== -1 || document.document.shortDescription.toLowerCase().indexOf($scope.searchDocument.toLowerCase()) !== -1)
{
//returns filtered object
return document
}
}else {
return document;
}
}
Trường hợp $ scope.searchDocument là biến phạm vi được liên kết với hộp văn bản tìm kiếm (thẻ đầu vào HTML), trong đó người dùng có thể nhập văn bản để tìm kiếm.
Nguồn
2016-09-16 04:57:04
Nếu một số đối tượng không có tài sản quản lý họ sẽ không xuất hiện ngay cả khi bộ lọc trống. Bạn có biết cách bao gồm chúng không? – Bludwarf
Nếu Tên là một mảng và tôi chỉ muốn lọc Tên Đầu tiên? – rocketspacer
@Bludwarf http://plnkr.co/edit/dMbYapbySJMGKiykvpG7?p=preview có lẽ điều này có thể giúp ai đó – ANinJa