Postei a mesma pergunta de forma diferente, mas ninguém respondeu. Não estou obtendo uma imagem clara do que os Formatadores e Analisadores fazem no angular js.
Pela definição, os Formatadores e os Analisadores são semelhantes a mim. Talvez eu esteja errado, pois sou novo neste angularjs.
Definição de formatadores
Matriz de funções a serem executadas, como um pipeline, sempre que o valor do modelo muda. Cada função é chamada, por sua vez, passando o valor para a próxima. Usado para formatar / converter valores para exibição no controle e validação.
Definição de Parsers
Matriz de funções a serem executadas, como um pipeline, sempre que o controle lê o valor do DOM. Cada função é chamada, por sua vez, passando o valor para a próxima. Usado para higienizar / converter o valor, bem como validação. Para validação, os analisadores devem atualizar o estado de validade usando $ setValidity () e retornar indefinido para valores inválidos.
Por favor, me ajude a entender os dois recursos com um exemplo simples. Uma ilustração simples de ambos será apreciada.
(123) 123-1234
de um número de telefone. Os analisadores leem os dados sempre que eles mudam e normalmente são usados para definir o estado $ valid da entrada. Os documentos têm exemplos de ambos.Respostas:
Este tópico foi muito bem abordado em uma questão relacionada: Como fazer a filtragem bidirecional no AngularJS?
Para resumir:
Aqui está um exemplo simples, baseado em um exemplo na documentação da API NgModelController :
Você pode vê-lo em ação: http://plnkr.co/UQ5q5FxyBzIeEjRYYVGX?plnkr=legacy
Ao digitar um nome em (ver para o modelo), você verá que o modelo está sempre em minúsculas. Mas, quando você clica em um botão e altera o nome de maneira programática (modelo para visualização), o campo de entrada está sempre em maiúsculas.
fonte
ngModel.$setViewValue(transformedInput);
para configurá-lo engModel.$render();
renderizá-lo a partir da função $ parsers.$formatters
fazer, é imediatamente revertido por$validators
. ; (Outro uso para formatadores e analisadores é quando você deseja armazenar datas no horário UTC e exibi-los no horário local nas entradas. Criei a diretiva datepicker abaixo e o filtro utcToLocal para isso.
Ele usa esse filtro utcToLocal que garante que a data de entrada esteja no formato correto antes de converter para a hora local.
moment.js é usado para converter datas locais em datas utc.
pickadate.js é o plugin datepicker usado
fonte