Próbuję zrozumieć część kodu dotyczącą filtrowania w AngularJS, którą znalazłem na stronie dokumentacji. (por. http://docs.angularjs.org/api/ng.filter:filter)
W szczególności .$
dołączony do obiektu search
, który jest używany w następujących wierszach:
24. Any: <input ng-model="search.$"> <br>
25. Name only <input ng-model="search.name"><br>
26. Phone only <input ng-model="search.phone"><br>
...
30. <tr ng-repeat="friendObj in friends | filter:search:strict">
Używając JSFiddle do włamania się, próbowałem usunąć .$
a następnie wpisując tekst w polu wejściowym, aby zastosować filtrowanie. To działało dobrze. Ogólnie więc, dlaczego miałbym zawracać sobie głowę dołączaniem .$
czy filtr wyszukiwania może bez niego działać?
Jestem całkiem nowy w AngularJS (podobnie jak JS, jak sądzę) i do tej pory czerpałem przyjemność z nauki. Każda pomoc będzie mile widziana.
Odpowiedzi:
1 dla odpowiedzi № 1Jeśli przeczytasz stronę filtra, zauważysz ten wiersz:
Odpowiada to prostemu dopasowaniu podłańcucha do łańcucha opisanego powyżej.
Więc w zasadzie mówi się, że po prostu wstawisz ng-model="search"
, używasz wyszukiwania ciągów, które domyślnie przeszukuje wszystkie elementy ciągu w tablicy / obiekcie. Kiedy używasz search.$
, określasz, że chcesz wyszukać każdy element w obiekcie. Jak wyjaśnia zdanie, są one równoważne.
Chociaż tylko search
wierzę, że osiąga ten sam wynik przy mniejszym kodzie .$
lepiej wyjaśnia zamiary filtra w przykładzie.
1 dla odpowiedzi nr 2
Działa, aby wyszukiwać dalej wszystko właściwości obiektów. W przypadku search.name
szukasz tylko obiektów, w których name
dopasowania właściwości, ale search.$
wyszukuje wszystkie właściwości.
Można użyć specjalnej nazwy właściwości $ (jak w {$: „text”}), aby zaakceptować dopasowanie do dowolnej właściwości obiektu. Odpowiada to prostemu dopasowaniu podłańcucha do łańcucha opisanego powyżej.
Od http://docs.angularjs.org/api/ng.filter:filter