Как мне отформатировать данные в представлении в AngularJS?
-
20-12-2019 - |
Вопрос
<input type="text" ng-model="user.User.DateOfBirth">
на мой взгляд. user.User.DateOfBirth
в настоящее время находится в YYYYMMDD
формат, но я хочу, чтобы он отображался как mm/dd/yyyy
формат в представлении.Можно ли это преобразовать только для дисплея?
Решение
Для вывода данных в правильном формате попробуйте фильтры (в вашем случае фильтр даты: http://docs.angularjs.org/api/ng.filter:date)
Ну, для входов это другой случай.Я думаю, вы всегда можете связать эти входные данные с другим свойством, посмотреть и проанализировать их самостоятельно, а затем назначить их своей реальной модели...
Еще немного информации, вы можете попробовать что-то вроде этого:
HTML:
<input type="text" ng-model="myDateInput">
В вашем JS-контроллере используйте следующее:
$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
});
Однако, вероятно, было бы лучше заставить пользователя использовать определенный формат ввода, либо с помощью какого-то сопоставления с образцом (и, следовательно, проверки), либо с помощью какого-то специального ввода/виджета даты.
Другие советы
Это также может помочь вам
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;
};
});