Napisałem funkcję filtrującą, która zwróci dane na podstawie przekazywanego argumentu. Chcę tę samą funkcjonalność w moim kontrolerze. Czy można ponownie użyć funkcji filtrowania w kontrolerze?
Do tej pory próbowałem:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
angularjs
angular-filters
ng-controller
sumanth
źródło
źródło
Odpowiedzi:
Wstrzyknij filtr $ do kontrolera
Następnie, gdziekolwiek chcesz użyć tego filtra, użyj go w następujący sposób:
Jeśli chcesz przekazać argumenty do tego filtra, zrób to, używając oddzielnych nawiasów:
Gdzie
arg1
jest tablica, na której chcesz filtrować, iarg2
obiekt używany do filtrowania.źródło
var anyNumber = $filter('number')(12.222222, 2);
aby uzyskać12.22
.$filter("currency")(price, "$", 2)
wbudowanym filtrem „waluta”: Więc jeśli miałbyś cenę = 200, to wyrażenie zwróciłoby „200,00 $”.$filter('filtter1')
(2 t). Jednak jeśli wstrzyknieszfiltter1Filter
Angular natychmiast narzeka, że zależność nie istnieje.Odpowiedź udzielona przez @Prashanth jest poprawna, ale istnieje jeszcze łatwiejszy sposób na zrobienie tego samego. Zasadniczo zamiast wstrzykiwać
$filter
zależność i używać niezręcznej składni wywoływania jej ($filter('filtername')(arg1,arg2);
), można wstrzykiwać zależność jako: nazwa filtra plusFilter
przyrostek.Biorąc przykład z pytania, można napisać:
Należy zauważyć, że musisz dołączyć
Filter
do nazwy filtra, bez względu na używaną konwencję nazewnictwa: do foo odwołuje sięfooFilter
fooFilter jest wywoływany przez wywoływanie
fooFilterFilter
źródło
Za pomocą poniższego przykładowego kodu możemy filtrować tablicę w sterowniku kątowym według nazwy. jest to oparte na poniższym opisie. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {name: 'Igor'});
JS:
HTML
źródło
Oto inny przykład użycia
filter
w kontrolerze Angular:Proste, hej?
źródło
Można to zrobić na trzy sposoby.
Załóżmy, że masz następujący prosty filtr, który konwertuje ciąg znaków na wielkie litery, z parametrem tylko dla pierwszego znaku.
Bezpośrednio przez
$filter
Uwaga: daje to dostęp do wszystkich filtrów.
Przypisz
$filter
dovariable
Ta opcja pozwala korzystać z
$filter
podobnychfunction
.Załaduj tylko określony
Filter
Możesz załadować tylko określony filtr, dodając nazwę filtra za pomocą
Filter
.Który używasz, zależy od osobistych preferencji, ale zalecam użycie trzeciego, ponieważ jest to najbardziej czytelna opcja.
źródło
źródło
Mam inny przykład, który stworzyłem dla mojego procesu:
Dostaję tablicę z opisem wartości w ten sposób
w moich plikach Filters.js:
Następnie test var (kontroler):
źródło
AngularJs pozwala na stosowanie filtrów w szablonie lub w sterowniku, dyrektywie itp.
w szablonie możesz użyć tej składni
a wewnątrz kontrolera możesz użyć wstrzykiwania usługi $ filter
Jeśli potrzebujesz więcej z przykładem Demo, tutaj jest link
Przykłady filtrów i demo AngularJs
źródło
Istnieje inny sposób oceny filtrów, który odzwierciedla składnię z widoków. Inwokacja jest owłosiona, ale można do niej zbudować skrót. Podoba mi się, że składnia łańcucha jest identyczna jak w widoku. Wygląda tak:
źródło
Wygląda na to, że nikt nie wspomniał, że można użyć funkcji jako arg2 w $ filter ('nazwa pliku') (arg1, arg2);
Na przykład:
źródło
Prostym przykładem daty z użyciem $ filter w kontrolerze byłoby:
Jak wyjaśniono tutaj - https://stackoverflow.com/a/20131782/262140
źródło
Użyj poniższego kodu, jeśli chcemy dodać wiele warunków zamiast pojedynczej wartości w filtrze kątowym javascript:
źródło
Najpierw wstrzyknij filtr $ do swojego kontrolera, upewniając się, że ngSanitize jest załadowany w Twojej aplikacji, później użycie kontrolera jest następujące:
Zawsze sprawdź dokumenty angularjs
źródło
jeśli chcesz filtrować obiekt w kontrolerze, spróbuj tego
Zwróci filtrowany obiekt zgodnie z warunkiem if
źródło
Ponowne użycie filtra Angular.js - Widok / Kontroler
To rozwiązanie obejmuje ponowne użycie filtrów kątowych. Co jest kolejnym sposobem filtrowania danych, a Google wylądował tutaj, gdy tego potrzebowałem; i lubię się dzielić.
Przypadek użycia
Jeśli już filtrujesz, powiedzmy w swoim powtórzeniu ng (jak poniżej), być może zdefiniowałeś filtr w kontrolerze w następujący sposób. Następnie możesz użyć ponownie, jak w końcowych przykładach.
Przykład użycia filtru - filtrowane powtórzenie w widoku
Przykład definicji filtra kątowego
Tak więc tutaj koncepcja polega na tym, że już używasz filtra utworzonego dla twojego widoku, a następnie zdajesz sobie sprawę, że chcesz go również użyć w kontrolerze.
Funkcja filtra Zastosowanie w kontrolerze Przykład 1
Funkcja filtra Zastosowanie w kontrolerze Przykład 2
Pokaż przycisk tylko wtedy, gdy nie znaleziono duplikatów, używając wcześniejszego filtra.
Przycisk HTML
Pokaż / ukryj przycisk
Niektórzy mogą uznać tę wersję filtrowania za łatwą i jest to opcja Angular.js.
Opcjonalny parametr komparatora „true” użyty w widoku i wywołaniu funkcji $ filter określa, że chcesz mieć ścisłe porównanie. W przypadku pominięcia wartości można wyszukiwać w wielu kolumnach.
https://docs.angularjs.org/api/ng/filter/filter
źródło