Как мне отформатировать данные в представлении в AngularJS?

StackOverflow https://stackoverflow.com//questions/20004255

  •  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;
    };
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top