Я разместил этот же вопрос в другой форме, но никто не ответил. Я не получаю четкого представления о том, что форматеры и парсеры делают в angular js.
По определению, оба средства форматирования и синтаксические анализаторы похожи на меня. Возможно, я ошибаюсь, так как я новичок в этом angularjs.
Определение форматеров
Массив функций, выполняемых в виде конвейера при изменении значения модели. Каждая функция вызывается по очереди, передавая значение следующей. Используется для форматирования / преобразования значений для отображения в элементе управления и проверки.
Определение парсеров
Массив функций для выполнения в виде конвейера всякий раз, когда элемент управления считывает значение из DOM. Каждая функция вызывается по очереди, передавая значение следующей. Используется для очистки / преобразования значения, а также для проверки. Для проверки парсеры должны обновлять состояние действительности с помощью $ setValidity () и возвращать undefined для недопустимых значений.
Пожалуйста, помогите мне разобраться в обеих функциях на простом примере. Приветствуется простая иллюстрация обоих.
(123) 123-1234
номера телефона. Парсеры читают данные каждый раз, когда они изменяются, и обычно используются для установки состояния ввода $ valid. В документах есть примеры обоих.Ответы:
Эта тема была очень хорошо освещена в связанном вопросе: как сделать двустороннюю фильтрацию в AngularJS?
Подвести итоги:
Вот простой пример, основанный на примере из документации API NgModelController :
Вы можете увидеть это в действии: http://plnkr.co/UQ5q5FxyBzIeEjRYYVGX?plnkr=legacy
Когда вы вводите имя в (от вида к модели), вы увидите, что модель всегда в нижнем регистре. Но когда вы нажимаете кнопку и программно меняете имя (модель для просмотра), поле ввода всегда отображается в верхнем регистре.
источник
ngModel.$setViewValue(transformedInput);
для его установки иngModel.$render();
рендеринга из функции $ parsers.$formatters
делать, немедленно отменяется$validators
. ; (Еще одно использование средств форматирования и синтаксических анализаторов - это когда вы хотите хранить даты в формате UTC и отображать их в локальном времени на входах, я создал для этого указанную ниже директиву datepicker и фильтр utcToLocal.
Он использует этот фильтр utcToLocal, который гарантирует, что введенная дата находится в правильном формате перед преобразованием в местное время.
moment.js используется для преобразования локальных дат в формат utc.
pickadate.js - используемый плагин datepicker
источник