Como faço para formatar dados em uma exibição em AngularJS?
-
20-12-2019 - |
Pergunta
<input type="text" ng-model="user.User.DateOfBirth">
é, na minha opinião. user.User.DateOfBirth
está atualmente em YYYYMMDD
o formato, mas eu quero mostrar como mm/dd/yyyy
formato de exibição.É possível converter este apenas para o visor?
Solução
Para exportar os dados no formato correto tente filtros (no seu caso o filtro de data: http://docs.angularjs.org/api/ng.filter:date)
Bem, para entradas isso é outro caso.Eu acho que você poderia sempre enlace de entrada para outra propriedade, assistir e analisar a si mesmo e, em seguida, atribuí-lo ao seu modelo real...
Alguns mais conhecimento, você pode tentar algo como isto:
HTML:
<input type="text" ng-model="myDateInput">
Em seu JS controlador, use o seguinte:
$scope.$watch('myDateInput', function (newValue) {
$scope.user.User.DateOfBirth = $filter('date')(newValue, 'yyyy-MM-dd'); // Or whatever format your real model should use
});
$scope.$watch('user.User.DateOfBirth', function (newValue) {
$scope.myDateInput = $filter('date')(newValue, 'yyyy-MM-dd'); // Or whatever format your input should use
});
Provavelmente seria melhor que forçar o usuário a usar um determinado formato de entrada, seja por algum tipo de correspondência padrão (e, portanto, validação) ou por algum tipo de especial data de entrada/widget.
Outras dicas
Isso também pode ajudá-lo
http://jsfiddle.net/mikeeconroy/Hu9m2/1/
.filter('myFormatDateFilter',function(){
return function(input){
if(angular.isDefined(input)){
if(input.length >= 8){
input = input.slice(0,8);
input = input.slice(4,6) + '/' + input.slice(6,8) + '/' + input.slice(0,4);
}
}
return input;
};
});