2013-11-15 3 views
2

<input type="text" ng-model="user.User.DateOfBirth"> на мой взгляд. user.User.DateOfBirth в настоящее время находится в YYYYMMDD формате, но я хочу, чтобы он отображал формат mm/dd/yyyy на вид. Можно ли преобразовать это только для отображения?Как я могу форматировать данные в представлении в AngularJS?

+2

Используйте пользовательский фильтр. '{{user.User.DateOfBirth | date [: format]}} ' –

+0

хорошо подробный метод здесь http://stackoverflow.com/questions/14474555/how-to-format-a-date-using-ng-model – charlietfl

ответ

1

Для вывода данных в правильных фильтрах формата TRY (в вашем случае фильтра даты: 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 
}); 

вероятно, было бы лучше, если бы заставить пользователя использовать определенный формат ввода, либо некоторая сопоставление шаблонов (и, следовательно, валидация) или какой-то особый ввод/виджет даты.

+0

My' user.User.DateOfBirth' isn 't действительный объект даты JS – Shamoon

+0

Он не должен быть объектом, он может быть строкой: взято из документов с фильтрами угловой даты: 'Дата для форматирования как объект Date, миллисекунды (строка или число) или различные ISO 8601 datetime string formats' –

+0

Я получаю: 'Expression 'user.User.DateOfBirth | date: 'medium' 'не является назначаемым. Элемент: ' – Shamoon

4

Это также может помочь вам

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; 
    }; 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^