To może być wykonane przez wstrzykiwanie zależność filtra do kontrolera i w kodzie jak
var filteredArray = filterDependency(arrayToFilter,args);
która zwraca nowy, przesączono tablicy. Ponieważ używasz filtru "filtr" (jest to filtr, którego nazwa to filtr), wtrysk zależności powinien być filterFilter
. Kontroler powinien wyglądać mniej więcej tak:
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
});
});
Co robimy jest ustawienie zegarka w modelu wejściowego (search
), dzięki czemu możemy uzyskać nową wartość i ponownie filtrować tablicę każdym razem, gdy wejście jest zmieniany .
także:
Jeżeli chcesz mieć dostęp do indeksu ng-repeat
od wewnątrz widoku, można użyć właściwości szczególnej $index
wewnątrz ng-repeat
jak:
<div ng-repeat="item in list | filter:search">
{{$index}}
</div>
Można również używać $first
, $middle
i $last
as shown in this Angular doc.
Demo: Here is a fiddle
nie jestem w 100% pewien, o co prosicie ... Zastanawiasz się, w jaki sposób można stwierdzić, czy jesteś na pierwszym elemencie funkcji filtrującej? – Polaris878