Điều này có thể được thực hiện bằng cách tiêm phụ thuộc của bộ lọc vào một bộ điều khiển và gọi đó là trong mã như
var filteredArray = filterDependency(arrayToFilter,args);
mà trả về một mảng lọc mới. Vì bạn đang sử dụng bộ lọc "bộ lọc" (đó là bộ lọc có tên là bộ lọc), việc tiêm phụ thuộc phải là filterFilter
. điều khiển của bạn nên tìm một cái gì đó như thế này:
var app = angular.module('myapp',[]);
app.controller('ctrlParent',function($scope,filterFilter){
var filteredArray = [];
$scope.list = ["abc","def","ghi","abcdefghi"];
$scope.$watch('search',function(newValue){
filteredArray = filterFilter($scope.list, newValue);
// do something with the first result
console.log(filteredArray[0]); // first result
});
});
Những gì chúng ta đang làm là thiết lập một chiếc đồng hồ trên mô hình đầu vào (search
) vì vậy chúng tôi có thể nhận được giá trị mới và tái lọc mảng bất cứ lúc nào đầu vào được thay đổi .
Cũng:
Nếu bạn cần truy cập vào chỉ số ng-repeat
từ bên trong xem, bạn có thể sử dụng thuộc tính $index
đặc biệt bên trong ng-repeat
như:
<div ng-repeat="item in list | filter:search">
{{$index}}
</div>
Bạn có thể cũng sử dụng $first
, $middle
và $last
as shown in this Angular doc.
Demo: Here is a fiddle
Tôi không chắc chắn 100% những gì bạn đang yêu cầu ... Bạn đang tự hỏi làm thế nào bạn có thể biết bạn đang ở trên phần tử đầu tiên trong hàm lọc của bạn? – Polaris878