/ / Znaczenie „. $” Po dołączeniu do obiektu filtru AngularJS - javascript, angularjs

Znaczenie ". $" Po dołączeniu do obiektu filtru AngularJS - javascript, angularjs

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 № 1

Jeś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