포맷터와 파서의 또 다른 사용법은 날짜를 UTC 시간으로 저장하고 입력시 현지 시간으로 표시하려는 경우 아래 datepicker 지시문과 utcToLocal 필터를 만들었습니다.
(function () {
'use strict';
angular
.module('app')
.directive('datepicker', Directive);
function Directive($filter) {
return {
require: 'ngModel',
link: function (scope, element, attr, ngModel) {
element.addClass('datepicker');
element.pickadate({ format: 'dd/mm/yyyy', editable: true });
// convert utc date to local for display
ngModel.$formatters.push(function (utcDate) {
if (!utcDate)
return;
return $filter('utcToLocal')(utcDate, 'dd/MM/yyyy');
});
// convert local date to utc for storage
ngModel.$parsers.push(function (localDate) {
if (!localDate)
return;
return moment(localDate, 'DD/MM/YYYY').utc().toISOString();
});
}
};
}
})();
이 utcToLocal 필터를 사용하여 입력 날짜가 현지 시간으로 변환하기 전에 올바른 형식인지 확인합니다.
(function () {
'use strict';
angular
.module('app')
.filter('utcToLocal', Filter);
function Filter($filter) {
return function (utcDateString, format) {
if (!utcDateString) {
return;
}
// append 'Z' to the date string to indicate UTC time if the timezone isn't already specified
if (utcDateString.indexOf('Z') === -1 && utcDateString.indexOf('+') === -1) {
utcDateString += 'Z';
}
return $filter('date')(utcDateString, format);
};
}
})();
moment.js 는 현지 날짜를 utc 날짜로 변환하는 데 사용됩니다.
pickadate.js 는 사용되는 datepicker 플러그인입니다.
(123) 123-1234
는 전화 번호 표시와 같이 모델의 표시 값을 수정합니다 . 파서는 변경 될 때마다 데이터를 읽고 일반적으로 입력의 $ valid 상태를 설정하는 데 사용됩니다. 문서에는 둘 다의 예가 있습니다.