Opublikowałem to samo pytanie w innej formie, ale nikt nie odpowiedział. Nie mam jasnego obrazu tego, co robią Formatters i Parsers w angular js.
Z definicji oba elementy formatujące i parsery wyglądają podobnie do mnie. Może się mylę, ponieważ jestem nowy w tym angularjs.
Definicja elementów formatujących
Tablica funkcji do wykonania jako potok przy każdej zmianie wartości modelu. Każda funkcja jest po kolei wywoływana, przekazując wartość do następnej. Służy do formatowania / konwersji wartości do wyświetlenia w sterowaniu i walidacji.
Definicja parserów
Tablica funkcji do wykonania, jako potok, za każdym razem, gdy formant odczyta wartość z DOM. Każda funkcja jest po kolei wywoływana, przekazując wartość do następnej. Służy do dezynfekcji / konwersji wartości, a także walidacji. W celu walidacji parsery powinny aktualizować stan ważności za pomocą $ setValidity () i zwracać undefined dla nieprawidłowych wartości.
Pomóż mi zrozumieć obie funkcje na prostym przykładzie. Doceniona zostanie prosta ilustracja obu.
(123) 123-1234
numeru telefonu. Parsery odczytują dane za każdym razem, gdy się one zmieniają i zwykle są używane do ustawiania stanu $ valid na wejściu. Dokumenty zawierają przykłady obu.Odpowiedzi:
Ten temat został bardzo dobrze omówiony w pokrewnym pytaniu: Jak zrobić dwukierunkowe filtrowanie w AngularJS?
Podsumowując:
Oto prosty przykład oparty na przykładzie w dokumentacji interfejsu API NgModelController :
Możesz to zobaczyć w akcji: http://plnkr.co/UQ5q5FxyBzIeEjRYYVGX?plnkr=legacy
Kiedy wpiszesz nazwę w (view to model), zobaczysz, że model jest zawsze pisany małymi literami. Ale kiedy klikniesz przycisk i programowo zmienisz nazwę (model do wyświetlenia), pole wejściowe jest zawsze wielkie.
źródło
ngModel.$setViewValue(transformedInput);
aby go ustawić ingModel.$render();
wyrenderować z funkcji $ parsers.$formatters
zrobić, jest natychmiast odwracane przez$validators
. ; (Innym zastosowaniem elementów formatujących i parserów jest przechowywanie dat w czasie UTC i wyświetlanie ich w czasie lokalnym na danych wejściowych, utworzyłem poniższą dyrektywę datepicker i filtr utcToLocal.
Używa tego filtru utcToLocal, który zapewnia, że data wejściowa ma prawidłowy format przed konwersją na czas lokalny.
moment.js służy do konwersji dat lokalnych na daty utc.
pickadate.js jest używaną wtyczką datepicker
źródło